1,Fastq数据质控

2,Fastq转化成bam,包含头文件

bwa aln ref.fa test_1.fq > test_1.sai
bwa aln ref.fa test_2.fq > test_2.sai
bwa sampe ref.fa -r "@RG\tID:<ID>\tLB:<LIBRARY_NAME>\tSM:<SAMPLE_NAME>\tPL:ILLUMINA" test_1.sai test_2.sai test_1.fq test_2.fq > test.sam

3,sam 转化成bam,如果SAM文件中有header @SQ lines。

samtools view -b -S test.sam > test.bam
##如果没有header时: samtools faidx ref.fa
## samtools view -bt ref.fa.fai test.sam > test.bam

4,sort bam

samtools sort test.bam > test.sorted.bam

或者:

java -jar picard.jar SortSam I=test.bam O=test.sorted.bam SORT_ORDER=coordinate

5, 标记重复

java -jar picard.jar MarkDuplicate ....

6, index 一下

samtools index test.sorted.repeatmark.bam 

7,Base Quality Score Recalibration

....

8, 使用GATK检测SNP

java -jar GenomeAnalysisTK.jar glm SNP -R ref.fa -T UnifiedGenotyper -I test.sorted.repeatmark.bam -o test.raw.vcf

使用samtools和bcftools检测SNP

samtools faidx ref.fa
samtools mpileup -d 1000 -DSugf test.sorted.repeatmark.bam > test.raw.vcf ##(samtools mpileup -vf 。。。) bcftools view -Nvcg -d 1000 test.raw.vcf > test.snp.vcf ##(我的软件运行这步会出错,用下面两行代码代替)
bcftools call -mv test.raw.vcf > test.raw_varient.vcf
bcftools filter -s LowQual -e '%QUAL<20 || DP>100' test.raw_varient.vcf > test.filt_varient.vcf

##也有直接用perl 脚本实现。在使用bcftools 得到variant calling变异后的结果后。需要对结果再次进行过滤,主要依据对比结果中的第8列消息,其中的DP4最为重要,对应的提供了四列:1, 比对结果和正链一致的reads数;2, 比对结果和负链一致的reads数;3, 比对结果在正链的variant 上的reads数;4, 比对结果在负链的variant上的reads数。当设定(value3+value4)大于某一阈值,才算是variant。

bcftools检测生成的vcf格式有10列。1,参考序列名。2,variant所在的left-most位置。3,variant的ID,(默认未设置,用“.”表示)。4,参考序列的allele。5,variant的allele(有多个alleles,则用“,”分隔)。6,variant/reference Quality。7,FILTers applied。8,varient的信息,使用分号隔开。9,Format of the genotype fields, seperated by colon (optional)。10,Sample genotypes and per-sample information(optional)。

bcftools 的第8列中显示了对variants的信息描述,其中Tag的描述如下:

Tad  Format  Description

AF1  double  Max-likelihood estimate of the site allele Frequency (AF)of the first ALT allele

DP   int    Raw read depth (without quality filtering)

DP4  int[4]    high-quality reference forward base, ref reverse, alternate for and alt rev bases

FQ  int     consensus quality. Positive: sample genotypes different; negative: otherwise

MQ	int	Root-Mean-Square mapping quality of covering reads
PC2 int[2] Phred probability of AF in group1 samples being larger (,smaller) than in group2
PCHI2 double Posterior weighted chi^2 P-value between group1 and group2 samples
PV4 double[4] P-value for strand bias, baseQ bias, mapQ bias and tail distance bias
QCHI2 int Phred-scaled PCHI2
RP int # permutations yielding a smaller PCHI2
CLR int Phred log ratio of genotype likelihoods with and without the trio/pair constraint
UGT string Most probable genotype configuration without the trio constraint
CGT string Most probable configuration with the trio constraint

使用bcftools过滤掉不可靠的位点:

bcftools filter的参数:

-e -exclude 主要用于表达式方式去除匹配上的位点,这个参数很关键,过滤需要此表达式

-g -SnpGap 过滤INDEL附近的snp位点,比如-SnpGap 5 则过滤INDEL附近5个碱基距离内的SNP

-G -IndelGap 过滤INDEL附近的INDEL位点

-o -output 输出文件的名称

-O -output-type 输出的格式,一般z和v都行

-s -soft-filter 将过滤掉的位点用字符串注释

-S -set-GTs setgenotypes of failed samples to missing value (.) or reference allele (0) (将不符合要求的个体基因改为".")

eg:过滤QUAL小于10,DP值小于5,INDEL附近的位点

bcftools filter -O v  -o test.filter_variant.vcf -s LOWQUAL -e 'QUAL<10 || FMT/DP < 5' --SnpGap 5 --set-GTs .  test.vcf.gz

提取过滤后的SNP位点

bcftools view -v snps test.filter_variance.vcf > test.snp_filter.vcf

或者在vcf文件中的INFO列里,如果是INDEL的话,会标注出INDEL,因此提取SNP也可以:

grep -v 'INDEL'  test.filter_variance.vcf > test.snp_filter.vcf

注意:

|| 与 | 区别:都表示“或”运算, 但是 || 运算符第一个表达式成立的话,后面的表达式不运算,直接返回。而 |  对所有表达式都判断。 && 与 & 的区别同理

参考:https://www.cnblogs.com/xiaofeiIDO/p/6857745.html

   http://www.bioinfo-scrounger.com/archives/248

NGS检测SNP的更多相关文章

  1. NGS检测ALK融合大起底--转载

    导读: ALK融合是非小细胞肺癌的关键驱动机制之一,在NSCLC患者中发生的频率约为3-7%.针对ALK融合的抑制剂克唑替尼.色瑞替尼以及Alectinib在治疗ALK融合阳性的NSCLC患者中都取得 ...

  2. 【7】基于NGS检测体系变异解读和数据库介绍

    目录 解读相关专业术语 体系变异解读规则 体系变异和用药解读流程 主要数据库介绍 解读相关专业术语 2个概念:胚系.体系突变 4种变异类型:SNV.Indel.融合/SV(大的易位/倒位/缺失).CN ...

  3. SNP命名

    SNP命名 [2016-11-24]       奶茶妹妹是谁,京东老板娘,咦?章泽天!没错! 国民老公是谁?万达少东家,王健林儿子,王思聪!恭喜你又答对了! 函数是谁?这不是数学上的名词吗?不对,是 ...

  4. SNP/单核苷酸多态性分析

    SNP/单核苷酸多态性分析 SNP(Single Nucleotide Polymorphism),即单核苷酸多态性,是由于单个核苷酸改变而导致的核酸序列多态.一般来说,一个SNP位点只有两种等位基因 ...

  5. 通过FISH和下一代测序检测肺腺癌ALK基因融合比较

    ALK FISH探针是FDA批准的用于检测肺癌患者中ALK重排的方法,这些患者可能受益于ALK激酶抑制剂.FISH测定在技术上可能具有挑战性并且难以解释.已经有研究者提出以ALK免疫组织化学和下一代测 ...

  6. 【转】GATK使用方法详解(包含bwa使用)

    一.使用GATK前须知事项: (1)对GATK的测试主要使用的是人类全基因组和外显子组的测序数据,而且全部是基于illumina数据格式,目前还没有提供其他格式文件(如Ion Torrent)或者实验 ...

  7. Google云平台使用方法 | Hail | GWAS | 分布式回归 | LASSO

    参考: Hail Hail - Tutorial  windows也可以安装:Spark在Windows下的环境搭建 spark-2.2.0-bin-hadoop2.7 - Hail依赖的平台,并行处 ...

  8. 【5】肿瘤DNA甲基化数据分析原理及流程

    目录 导论 DNA甲基化基本概论 检测DNA甲基化的方法 DNA甲基化数据分析流程及方法 DNA甲基化在肿瘤研究中的应用 导论 表观遗传:非DNA决定的基因表达,或表型改变中可遗传因素的研究 DNA水 ...

  9. NGS概念大科普(转)

    NGS又称为下一代测序技术,高通量测序技术 以高输出量和高解析度为主要特色,能一次并行对几十万到几百万条DNA分子进行序列读取,在提供丰富的遗传学信息的同时,还可大大降低测序费用.缩短测序时间的测序技 ...

随机推荐

  1. java变量常量

    1. java 变量遵循先声明,再赋值,后使用的原则. 一个变量可以只声明,不赋值,没有问题(只是这个变量没有实际意义,但完全没有问题).但如果想要使用它,那么就一定要给它赋值,而大多数时候我们又不知 ...

  2. centos7 部署 汉化版 gitlab 10.0.2

    更新说明: 20171009:增加3.5的内容 20171008:整理出gitlab部署手册 =============================================== gitla ...

  3. CSS 小结笔记之盒子模型

    网页标签可以看成是一个个盒子,页面设计就像垒积木一样,在网页中将盒子摆好显示出来.在浏览器中可以很清楚的去看到一个标签的盒子,具体方法如下: 打开浏览器的开发人员工具,在Elements中选中一个标签 ...

  4. Asp.net mvc Kendo UI Grid的使用(三)

    上一篇的操作已经能够显示基本数据了,这次介绍一下如何进行数据操作以及显现自定义命令. 第一步当然还是准备数据: [HttpPost] public ActionResult PersonalList_ ...

  5. PHP生成随机或者唯一字符串

    本文出至:新太潮流网络博客 /** * [生成随机字符串] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB http://blog.i ...

  6. SQLSERVER2012里的扩展事件初尝试(上)

    SQLSERVER2012里的扩展事件初尝试(上) SQLSERVER2012里的扩展事件初尝试(下) 周未看了这两篇文章: 扩展事件在Denali CTP3里的新UI(一) 扩展事件在Denali ...

  7. vim和xshell配色

    xshell配色: http://www.hookr.cn/xshell-pei-se.html vim配色: 参考该文中的配置方法,包括设置256色等.http://www.cnblogs.com/ ...

  8. 判断js对象类型

    javascript中检测对象的类型的运算符有:typeof.constructor.instanceof.prototype. 1.typeof typeof是一个一元运算符,返回结果是一个说明运算 ...

  9. UML建模中简单消息、同步消息和异步消息

    两种消息在UML图中的表示方法如图: 1.同步方式 两个通信应用服务之间必须要进行同步,两个服务之间必须都是正常运行的.发送程序和接收程序都必须一直处于运行状态,并且随时做好相互通信的准备. 发送程序 ...

  10. C++发展概述、优缺点及应用领域

    个人观点(C++虽功能强大,但是底层还是调用C,C++为了吸引更多的C程序员,功能过于丰富且复杂,一定程度上反而降低了可编程的实用性.但是不可否认C++ 也是一门艺术.) C++是一门以C为基础发展而 ...