VarBen:NGS变异数据模拟软件
VarBen(Variant Benchmark)
2021年3月3号,来自 国家卫生健康委临床检验中心、中国科学院计算技术研究所等单位的研究人员开发了肿瘤突变数据模拟软件VarBen,包括SNV、InDel、CNV、SV等多种变异形式的模拟。同时该软件支持目前临床上常用的测序平台,包括Illumina、华大智造MGISEQ以及Ion torrent测序平台。
据介绍,VarBen采用的是比对到参考基因组特定位点的测序reads进行编辑的方式来进行突变模拟,该方法可保留测序过程“湿实验”部分核酸提取、靶向捕获、文库制备以及测序过程中产生的错误分布模式,从而保证模拟数据更加的接近真实。研究人员根据不同高通量测序平台的原理以及不同种类基因变异的特点,使得VarBen能够对几乎所有的变异类型进行模拟,包括SNV、Indel、Complex insertion-deletion、CNV以及SV。此外,VarBen同时支持全基因组、全外显子组以及靶向panel测序数据的模拟,并且适用于多个测序平台。
文献名称:VarBen: Generating in Silico Reference Data Sets for Clinical Next-Generation Sequencing Bioinformatics Pipeline Evaluation
期刊名称:The Journal of Molecular Diagnostics (国际分子诊断领域权威期刊) ( IF 5.553 )(JMD)
发表时间:2020-12-18
文章介绍1:https://www.x-mol.com/paper/1340047108494508032
文章介绍2:https://www.sohu.com/a/453971998_120054289
github:https://github.com/nccl-jmli/VarBen
数据路径:SRP171108
软件亮点(和其他软件相比):
- BAMSurgeon不支持complex variants,也不支持 Ion Torrent system 测序仪测序数据
- insiM 只能在PE Illumina测序数据中添加 SNV,InDel
- MutationMaker 能模拟 SNV,substitutions和小的InDel,但属于非开源软件
- VarBen可以引入更全面的变体集,包括SNV、InDels、复杂的删除-插入变体和大型结构变体(deletions, duplications,translations, and inversions)
测试软件:
- 1)Somatic SNV 检测软件:Mutect2 version 4.0.8.0; Strelka2 version 2.9.2;Varscan2 version 2.3.9
- 2)Somatic SV 检测软件:novoBreak version 1.1 ; Manta version 1.3.1;Lumpy version 0.2.13
- 3) Germline SNV 检测软件: HaplotypeCaller; VariantRecalibrator; ApplyRecalibration (GATK version 4.0.3.0的三款工具)
下载和安装:
wget https://github.com/nccl-jmli/VarBen/archive/master.zip
unzip master.zip
cd VarBen-master
python2 bin/muteditor.py -h ### 模拟小的变异:SNV、InDel、Complex variation
python2 bin/sveditor.py -h ### 模拟大的变异:SV、CNV
使用:
注意:bwa、samtools、bedtools 要加入环境变量中,流程里面直接使用的时bwa,samtools、bedtools,没有给传软件路径的参数
最终生成的bam文件存储在 outdir/edit.sorted.bam
1. muteditor.py
python2 VarBen-master/bin/muteditor.py \
--mutfile mutsnv.tsv \
--bamfile test.bam \
--reffasta ucsc.hg19.fasta \ ###参考基因组路径,输入和--alignerIndex一样,不知有什么意义?
--aligner bwa \ ###这里一定是写bwa,而不是bwa的路径
--alignerIndex path/ucsc.hg19.fasta \
--seqer illumina \
--mindepth 100 \
--minmutreads 10 \
--process 8 \
--outdir snv_out
2. sveditor.py
python2 VarBen-master/bin/sveditor.py \
--svfile mutcnv.tsv \
--bamfile test.bam \
--reffasta ucsc.hg19.fasta \ ###参考基因组路径,输入和--alignerIndex一样,不知有什么意义?
--alignerbwa \ ###这里一定是写bwa,而不是bwa的路径
--alignerIndex ucsc.hg19.fasta \
--seqer illumina \
--mindepth 100 \
--minmutreads 10 \
--readlength 100 \ ### muteditor.py 不需要这个参数
--process 8 \
--outdir cnv_out
解析:持续进行中
1. muteditor.py
SNV/InDel模拟步骤:
i)从BAM文件中根据用户指定的变异等位基因分数(VAF)的指定位置或区域随机选择Read;
ii)根据指定的变体类型(包括)修改、插入或删除重叠位置或区域的Reads中的SNV和InDel;
iii)编辑后的Reads被重新映射到参考基因组以获得适当的比对信息并与从原始输入BAM中剩下的的Read进行合并。
SNV/InDel脚本处理步骤:
1) 获得单倍型 "step1: deal with mutfile and get haplotypes":varben.deal_mut.checkMutInput.get_haplotypes
① 判断突变类型 varben.deal_mut.checkMutInput.check_haplotype -> varben.deal_mut.checkMutInput.check_mut_info
2)获得序列: "step2: deal haplotypes and get total_chosen_reads, total_chosen_reads_muts"
varben.deal_mut.dealHaplotype.deal_haplotype_multi
2. sveditor.py
SV变异模拟步骤:
1)读取结构变化(SV)模拟的类型分类:
类型1:Read2与断点A重合或者Read1与断点B重合
类型2:Read1与断点A重合或者Read2与断点B重合
类型3:断点落在配对Reads中间
类型4: 配对Read完全落在两个断点之间
类型5:断点同时与Read1和Read2重合
2)SV变异模拟:
i)根据BAM文件中指定的VAF,选择与指定断点有Overlap的Read;
ii)选择的Read根据删除区域分为五种类型,这些Read被编辑以产生 soft-clipper Reads和另一端Read;
iii)编辑后的Reads重新进行比对;
iv)合并重新比对的Read和的原始BAM中的剩余Read;
SV脚本处理步骤:
0)检测输入文件格式 "step0: prepare sv list" :varben.deal_sv.checkSVInput.check_sv_file
1)获得插入序列 "step1: get insert size of paired reads":varben.common.methods.get_insertSize_range
都是 [100, 1000]
2)获得编辑序列:"step2: deal with sv and get total edited reads"
①varben.deal_sv.dealSVType.deal_sv -->
②varben.deal_sv.dealSVType.deal_cnv -->
③varben.deal_sv.getReadsType.pos_type_classify --> ###里面设置了process=20,
④varben.deal_sv.getReadsType.posType_sub_paired -->
varben.deal_sv.dealSVType.get_write_reads --> ###输出需要增加或者删除或者修改的序列ID
3)将需要处理的序列写入Bam :"step3: get reads by region bed and write bam file"
①varben.deal_sv.getReadsByRegion.get_reads_by_region -->
②varben.common.bamconvert.getRegionReads --> ###生成bam
samtools view raw.bam -b -h
-o cnv_out/tempDir/used_tmp.bam
-U cnv_out/tempDir/exclude_tmp.bam
-L cnv_out/tempDir/consider_region.bed
③varben.common.bamconvert.bamIndex ---> ###创建bam索引
④varben.deal_sv.writeBamByChr.write_sub_bam
4)合并编辑后的read到原始文件中,并重新比对生成新的bam文件:"step4: merge edited reads and remap to new bam, consider about the tag, RG, life reads"
varben.deal_sv.mergeEditBam.merge_edit_bam
5)合并bam文件:"step5: remapped edit reads and merge"
varben.common.bamconvert.remap --> varben.common.bamconvert.bamToFastq
(edit.bam -> fq1,fq2 -> edit.rmap.bam -> edit.remap.sort.bam -> edit.sort.bam)