使用SNVSniffer软件找somatic mutation
SNVSniffer软件发表在BMC Syst Biol. 2016 Aug,文章标题是:《SNVSniffer: an integrated caller for germline and somatic single-nucleotide and indel mutations》。一般来说,新的软件发表,必须跟该领域比较流行的软件进行性能比较,该软件也和VarScan2, SomaticSniper, JointSNVMix2 and MuTect进行了比较。
SNVSniffer and synthetic samples are publicly available at http://snvsniffer.sourceforge.net
背景知识
体细胞突变(somatic mutation)是指患者某些组织或者器官后天性地发生了体细胞变异,虽然它不会遗传给后代个体,却可以通过细胞分裂,遗传给子代细胞。体细胞突变对肿瘤的发生发展有关键性的作用,并且它也是制定肿瘤癌症靶向治疗措施的关键所在。
NGS使体细胞变异的检测更加全面,成本更低,在检测多种体细胞变异上具有很大的优势,但在使用过程中还存在着挑战:如**样品降解、覆盖度不足、遗传异质性和组织污染(杂质)等问题。为应对以上挑战,降低错误率,科学家采取了不同的算法和统计模型用于检测体细胞突变。目前最受欢迎的有Varscan、SomaticSniper、 Strelka 和MuTect2 **。这些软件大都是直接对肿瘤-正常样本的每个位点进行比较,对肿瘤样本中明显高于正常样本的次等位基因进行标记,作为体细胞变异,同时排除种系突变和杂合性丢失(LOH)情况。虽然这些软件具有较高的引用率,并在不断地更新,但仍存在不足:
- a 、缺乏完整可靠的实验来评估检测结果;
- b、 缺乏金标准,不能保证检测到的灵敏度和特异性最高;
- c、 在实际应用中,各软件的相对优缺点在很大程度上是未知的。
下面是TCGA计划采取的软件:
- MuSE
- varscan
- MuTect
- SomaticSniper
大家可以去下载到TCGA计划的这4个软件输出的maf文件格式的somatic突变信息文件哦。(文末有下载链接哈)
首先下载安装SNVSniffer
mkdir -p $HOME/biosoft/SNVSniffer
cd $HOME/biosoft/SNVSniffer
wget https://sourceforge.net/projects/snvsniffer/files/SNVSniffer-v2.0.4_bin_x86_64.tar.gz
tar zxvf SNVSniffer-v2.0.4_bin_x86_64.tar.gz
./SNVSniffer somatic --help
针对N-T配对的bam文件运行SNVSniffer
主要是用到了SNVSniffer软件的的 somatic (a somatic SNV/indel caller from paired tumor-normal samples),
虽然支持3种输入数据;
-f <int> (input file format, default = 2)
0: mpileup format generated by SAMtools
1: pipeup format generated by MAQ
2: BAM format
但最常用的就是bam文件啦,默认格式。
ref=$HOME/biosoft/GATK/resources/bundle/hg38/Homo_sapiens_assembly38.fasta
$HOME/biosoft/SNVSniffer/SNVSniffer somatic
normal_bam=N_recal.bam
tumor_bam=T_recal.bam
samtools view -H $normal_bam > normal_header.sam
samtools view -H $tumor_bam > tumor_header.sam
$HOME/biosoft/SNVSniffer/SNVSniffer somatic -g $ref
normal_header.sam tumor_header.sam $normal_bam $tumor_bam
-o out.vcf
一般来说,都是一大波样品批量运行啦, 需要一个一个config文件,主要是3列信息:
- 第一列是肿瘤命名
- 第二列是肿瘤病人的normal组织的bam文件地址
- 第三列是肿瘤病人的肿瘤组织的bam文件地址。
批量运行SNVSniffer的脚本如下:
ref=$HOME/biosoft/GATK/resources/bundle/hg38/Homo_sapiens_assembly38.fasta
$HOME/biosoft/SNVSniffer/SNVSniffer somatic
cat $config_file |while read id
do
arr=($id)
normal_bam=${arr[1]}
tumor_bam=${arr[2]}
sample=${arr[0]}
if((i%$number1==$number2))
then
if [ ! -f ${sample}_SNVSniffer.vcf ]; then
samtools view -H $normal_bam > ${sample}_normal_header.sam
samtools view -H $tumor_bam > ${sample}_tumor_header.sam
$HOME/biosoft/SNVSniffer/SNVSniffer somatic -g $ref
${sample}_normal_header.sam ${sample}_tumor_header.sam $normal_bam $tumor_bam
-o ${sample}_SNVSniffer.vcf
fi
fi
i=$((i+1))
done
有意思的是,这个SNVSniffer软件得到的vcf文件,每个肿瘤WES都是几万个somatic突变信息,太可怕了。如下所示:
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOR
chr1 12112 . A G . PASS DP=337;VT=SNP;SS=SOMATIC;HC=3.657;PVAL=0.0303704 GT:DP 0/0:115 0/1:222
chr1 14604 . A G . PASS DP=105;VT=SNP;SS=SOMATIC;HC=3.657;PVAL=0.0424507 GT:DP 0/0:23 0/1:82
chr1 14610 . T C . PASS DP=122;VT=SNP;SS=SOMATIC;HC=3.657;PVAL=0.0367495 GT:DP 0/0:26 0/1:96
chr1 16487 . T C . PASS DP=66;VT=SNP;SS=SOMATIC;HC=3.657;PVAL=0.0419225 GT:DP 0/0:12 0/1:54
chr1 17614 . G A . PASS DP=258;VT=SNP;SS=SOMATIC;HC=3.657;PVAL=0.0238812 GT:DP 0/0:150 0/1:108
chr1 17730 . C A . PASS DP=186;VT=SNP;SS=SOMATIC;HC=4.350;PVAL=0.0752379 GT:DP 0/0:94 0/1:92
chr1 17746 . A G . PASS DP=165;VT=SNP;SS=SOMATIC;LC=3.657;PVAL=0.00617743 GT:DP 0/0:80 0/1:85
这个就非常尴尬,一般来说,肿瘤WES的每个病人也就是几百个somatic突变信息的数量级,这个SNVSniffer软件一下子整出来了几万个,后续就算去理解SNVSniffer的算法,然后针对性的根据vcf文件的信息进行过滤也很麻烦。
所以同样的也放弃SNVSniffer软件。
SNVSniffer的其它功能
总共是5个功能:
- snp (a SNP/indel caller),
- somatic (a somatic SNV/indel caller from paired tumor-normal samples),
- gsim (an Illumina-like read simulator for SNP/indel calling),
- ssim (an Illumina-like tumor-normal sample pair simulator for somatic SNV/indel calling),
- eval (a VCF-based evaluation algorithm for germine and somatic SNVs/indels).
大概率是用不上了,就不过多介绍。
还是需要继续看综述或者测评工具:
- 2016年文章:Evaluation of Nine Somatic Variant Callers for Detection of Somatic Mutations in Exome and Targeted Deep Sequencing Data,链接是:https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0151664
- 2018年文章:A review of somatic single nucleotide variant calling algorithms fornext-generation sequencing data,链接是https://www.sciencedirect.com/science/article/pii/S2001037017300946
争取早日找到合适的工具替代GATK的Mutect2流程,见前面我的分享:最新最全的mutect2教程,
附上TCGA数据库maf突变资料官方大全
因为TCGA计划跨时太长,这些年找somatic变异的软件也很多,所以TCGA团队下功夫在计划结束后(April 2018)完整的系统性的整理了最后的somatic突变数据。依托于文章:Scalable Open Science Approach for Mutation Calling of Tumor Exomes Using Multiple Genomic Pipelines March 201810.1016/j.cels.2018.03.002
纳入的软件包括:
Deposited Data |
||
---|---|---|
MC3 Files |
https://gdc.cancer.gov/about-data/publications/mc3-2017 |
|
Software and Algorithms |
||
MuTect |
https://github.com/broadinstitute/mutect |
|
Pindel |
https://github.com/genome/pindel |
|
Radia |
https://github.com/aradenbaugh/radia |
|
VarScan2 |
http://dkoboldt.github.io/varscan/ |
|
SomaticSniper |
https://github.com/genome/somatic-sniper |
|
MuSE |
https://github.com/danielfan/MuSE |
|
Indelocator |
http://archive.broadinstitute.org/cancer/cga/indelocator |
|
Maf2Vcf |
https://github.com/covingto/vcf2maf/ |
全部样本的somatic变异文件合并起来是七百多M,MC3 Public MAF - mc3.v0.2.8.PUBLIC.maf.gz
- 下载链接是:https://api.gdc.cancer.gov/data/1c8cfe5f-e52d-41ba-94da-f15ea1337efc
写在文末
其实关于如何找变异,我在B站是有一个课程的:
视频观看方式
- 视频免费在B站:https://www.bilibili.com/video/BV15s411P7ay 大家学习的时候记得发弹幕交流
- 同步查看视频配套代码:https://www.jianshu.com/p/49d035b121b8
- WES 实战演练的素材:链接:https://share.weiyun.com/56MQHYG 密码:8jxwba 包括一些公司PPT,综述以及文献。
- WES 实战演练的思维导图:文档链接:https://mubu.com/doc/1iDucLlG5g 密码:7uch
目前,上面的链接都是亲测有效的,如果你看完发现链接无法打开,说明已经里面被举报而封杀了,只能是去交流群拿到最新链接了。
- R语言数据处理——数据合并与追加
- python爬取链家租房之获取房屋页面的详细信息(房名,地址,房价,面积,url)
- 信用卡“坏账”客户分析(二)
- Mac上提升python运算速度-PyPy初体验
- python处理json数据(复杂的json转化成嵌套字典并处理)
- Pointer-network理论及tensorflow实战
- python3 log文件处理获取某天需要的数据
- 实战深度强化学习DQN-理论和实践
- Python 工匠:编写条件分支代码的技巧
- python3 下 Zabbix监控调用graph.get并且下载监控图
- 用R语言复盘美国总统大选结果~
- 最新Apache Spark平台的NLP库,助你轻松搞定自然语言处理任务
- 使用Seq2Seq+attention实现简单的Chatbot
- R语言可视化——用ggplot构造期待已久的雷达图
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用openssl 生成免费证书的方法步骤
- linux cd的含义以及用法
- leetcode栈之比较含退格的字符串
- CentOS使用本地yum源搭建LAMP环境图文教程
- 清除CentOS 6或CentOS 7上的磁盘空间的方法
- leetcode栈之二叉树的前序遍历
- 解决Linux下Mysql5.7忘记密码问题
- CentOS8.0 安装配置ftp服务器的实现方法
- Linux实现自动登录的实例讲解
- Linux中date命令转换日期提示date: illegal time format问题解决
- leetcode队列之最近的请求次数
- 安防视频云服务EasyCVR集成海康SDK时语音对出现杂音问题,如何解决?
- arm linux利用alsa驱动并使用usb音频设备
- linux 磁盘转移空间的方法
- 详解git中配置的.gitignore不生效的解决办法