VCF数据处理之——截取个体变异的基因型
我的课题是基因组结构变异检测方面的,所以经常需要需要做一些检测变异的实验。检测完之后需要对结果进行一个性能检验,即用检测结果与基准数据(Benchmark)对比,得到一个精度和敏感度,用此来评价检测工具的性能(Performance)。如果使用已发布的,包含个体基因型的VCF数据作为基准。就需要将个体存在的变异截取出来,用于与检测结果的对比。
自己针对缺失(deletion)变异VCF文件,做了一个小工具,信息如下:
1 | Program: vcf_del (format the <deletion> vcf file) |
该工具,将包含deletion的VCF文件(如果VCF中不是只包含deletion,应首先对VCF进行筛选,如根据SVTYPE=DEL字段筛选为只包含deletion的文件)格式化每一行为chrId start end+1 (genotype)
的格式。其中缺失变异起始位置即为VCF中的POS字段,而结束位置为INFO字段的END信息。
这里对一些可选参数进行必要说明:
- -f: 去除重叠的缺失变异。通常VCF是按照CHROM和POS对变异进行排列,有时候会存在相邻变异包含重叠的情况,显然这两个变异是不会同时存在于一个个体当中。但是如果根据变异列表来仿真个体,会将变异信息加入到参考序列中以此来仿真个体,这时,上述情况就会出现错误,所以加上这个参数来避免这种情况。此外,这个参数还会去除一些非纯缺失的情况,如ATCC=>AG,这并不是单纯的缺失,显然简化的输出并不能包含这些信息,故也去掉这种情况。
- -c: 只输出指定染色体的数据。
- -n: 只输出指定个体的基因型,需要-g参数。
- -i: 只输出指定长度以上的缺失变异。
- -g: 输出内容包括变异的基因型。
- -o: 与-n配合使用,只有当个体存在该变异时,才会输出此变异。用于生成个体的Benchmark变异清单,便于后续与检测结果相比较来统计精度和准确率。
- -s: 简化输出的基因型,通常基因型为0/0时,输出为0;其他情况输出为1,即存在此变异。该功能可为后续统计变异在个体中出现的频率做铺垫。
下面是一些使用举例:
- 获取指定个体,指定染色体所存在的变异。
1
vcf_del -g -o -c $chrId -n $sample $vcf_file $vcf_file.format
- 获取指定染色体的变异对应所有给她的基因型。
1
vcf_del -g -c $chrId $vcf_file $vcf_file.format
- 获取指定个体的变异存在情况。
1
vcf_del -gs -n $sample $vcf_file $vcf_file.format
- 获取20号染色体上长度大于100的变异列表,去除不纯的变异及存在重叠区域的变异。
1
vcf_del -fi 100 -n 20 $vcf_file $vcf_file.format