#longshot检测SNP
echo "longshot --bam ngmlr.sorted.bam --ref /share/home/xiehs/data/GATK/hg38/Homo_sapiens_assembly38.fasta --out longshot_output.vcf" >longshot.sh
#longshot --bam example_data/pacbio_reads_30x.bam --ref example_data/genome.fa --out example_data/longshot_output.vcf
bcftools view -H longshot_output.vcf | le
bcftools view -O b -o longshot.bcf.gz longshot_output.vcf
bcftools index longshot.bcf.gz
bcftools stats longshot.bcf.gz
二、利用 sniffles 检测 SV 结构变化
将测序数据与参考基因组进行比对之后,得到排序并建立索引的 bam 之后,就可以进行 SV检测了。检测 SV 的工具众多,这里面我们推荐使用 sniffles 与 cuteSV 两款软件来进行处理。
snpiffles 软件在 HG002 基因组上达 96% 召回率(recall)和精确率(precision)。sniffles 内置多种统计模型,能更准确地识别 SV 信号。sniffles 输入也是排序后的 bam 文件,不过 sniffles 一般与 NGMLR 一起组合使用,NGMLR 也是一款比对软件,将测序得到的数据比对到基因组上,与 minimap2 类似,能更准确地分辨长读长技术的测序错误,适合跨越复杂 SV 区域的长 reads 比对;
如果使用 minimap2 的比对结果,由于 MD 标志的问题,在 minimap2 比对的时候,需要添加—MD 选项。
软件官网:
代码语言:javascript复制https://github.com/fritzsedlazeck/Sniffles
官网:
代码语言:javascript复制https://github.com/philres/ngmlr
代码语言:javascript复制#ngmlr比对
echo "ngmlr -t 24 -x ont -r /share/home/xiehs/data/GATK/hg38/Homo_sapiens_assembly38.fasta -q /share/home/xiehs/data/UCSC_Ultralong_OxfordNanopore_Promethion/GM24385_1.fastq.gz -o ngmlr.sam" >ngmlr.sh
bsub -q fat -n 24 -o %J.log -e %J.err sh ngmlr.sh
代码语言:javascript复制#sniffles检测SV
echo "sniffles -m ngmlr.sorted.bam -v sniffles.vcf -t 24" >sniffles.sh
bsub -q fat -n 24 -o %J.log -e %J.err sh sniffles.sh
#统计
bcftools query -f '%SVTYPEn' sniffles.vcf | sort | uniq -c
三、利用 cuteSV 检测 SV
3.1 软件介绍
cuteSV 是一款基于长测序片段比对的基因组 SV 检测工具,运行速度快,在准确度和灵敏度等指标上均有优异的表现,同时在低测序深度数据上仍保持着良好的结构变异检测率。
cuteSV 由哈尔滨工业大学开发。该软件主要有下面三个显著特点:
1、SV 信号的识别:cuteSV 设计和实现了多种 SV 信号识别方法,分别从比对内和比对间全面收集多种类型 SV 信号。同时,cuteSV 采用了一套高效的启发式算法,将琐碎的插入与删除变异信号进行自动化整合以提升后续过程中 SV 识别的准确度。
2、SV 信号的聚类:cuteSV 设计了一种渐进复杂空间的聚类算法以及多重启发式的规则,在基因组局部区域内分别对 SV 信号进行聚类并对其进行优化,使零乱、繁杂的 SV 信号转换为高一致性的 SV 候选位点。
3、SV 的检测与基因分型:cuteSV 设计了一套特定的 SV 检测与基因分型规则,在上述聚类得到的 SV 候选位点中识别 SV 并完成基因分型。此外,cuteSV 还可以输出基因型的似然估计、变异质量分数等多重统计量,以便于进一步的质量控制和构建更高准确度的检测集。
官网:
代码语言:javascript复制https://github.com/tjiangHIT/cuteSV
文档:
代码语言:javascript复制https://github.com/tjiangHIT/cuteSV/wiki/Diploid-assembly-based-SV-detection-using-cuteSV
3.2 软件使用
cuteSV 的使用也非常简单,输入比对排序并建立索引的 bam 即可。相比于其他工具,cuteSV还具有一些明显的优势。在文章中介绍了,作者对 cuteSV 的性能进行了基准测试,同时与Sniffles、PBSV 和 SVIM 等工具进行了比较。cuteSV 展现出了三大主要优势:
1、相较于其他工具,cuteSV 在不同测序深度数据中能够检测出更多的 SV。特别是在低覆盖度数据集中,cuteSV 在准确度没有降低的前提下仍保持着较高的灵敏度。
2、cute SV 在基因型检测方面表现出色,发现了更多的杂合与纯合 SV。
3、与其他工具相比,cute SV 具有更好的检测速度,同时内存的消耗也更低。
此外,cute SV 的运行速度随 CPU 线程数的增加几乎呈线性增长,这表明其拥有良好的可扩展性。
测序数据:使用nglmr比对后排序数据
代码语言:javascript复制#cuteSV检测SV,软件暂时conda没装上
mkdir work_dir
echo "cuteSV ngmlr.sorted.bam /share/home/xiehs/data/GATK/hg38/Homo_sapiens_assembly38.fasta cutesv.vcf work_dir -t 24 --max_cluster_bias_INS 100 --diff_ratio_merging_INS 0.3 --max_cluster_bias_DEL 100 --diff_ratio_merging_DEL 0.3" >cutesv.sh
bsub -q fat -n 24 -o %J.log -e %J.err sh cutesv.sh
grep -v "^##" cutesv.vcf | le
3.3 结果质控评估
网址:
代码语言:javascript复制https://github.com/ACEnglish/truvari
代码语言:javascript复制https://github.com/tjiangHIT/sv-benchmark
profile:剖面
assignment:分配
Accuracy:准确率,预测正确的比例
Recall(召回率):从数据库内检出的相关的信息量与总量的比率。
Precision (准确率):Precision 表示你预测为正的样本中有多少预测对了
F1score:又称平衡 F 分数(balanced F Score),它被定义为精确率和召回率的调和平均数。
ROC 曲线,Receiver Operating Characteristic curve) :ROC 曲线展示了当改变在模型中识别为正例的阈值时,召回率和精度的关系会如何变化。
正确率(accuracy):accuracy = (TP TN)/(P N),就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好;
错误率(error rate):错误率则与正确率相反,描述被分类器错分的比例,error rate = (FP FN)/(P N),对某一个实例来说,分对与分错是互斥事件,所以 accuracy =1 - error rate;
灵敏度(sensitive):sensitive = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力;
特效度(specificity):specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力;
精度(precision):精度是精确性的度量,表示被分为正例的示例中实际为正例的比例,precision=TP/(TP FP);
召回率(recall):召回率是覆盖面的度量,度量有多个正例被分为正例recall=TP/(TP FN)=TP/P=sensitive,可以看到召回率与灵敏度是一样的。