经过半个月的乱七八糟,更新最近能理解的东西
首先自行去官网Introduction - SnpEff & SnpSift (pcingola.github.io)下载一个压缩包,经常用得到,反正数据有问题卸载之后再次安装可以重新构建
这里我重新构建一下,也算是重新整理一份
snpeff需要Java环境,自己去下载Java
然后环境配置,记得生效,这个是我的路径,改一下路径就OK
export JAVA_HOME=/usr/lib/jvm/jdk-13.0.1
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export SNPEFF_HOME=/home/yjl/pack/snpEff
export PATH=$PATH:$SNPEFF_HOME
1.下载软件
按照上面命令解压,进入之后页面是这个
我们是自己构建数据库
2.构建数据库
准备条件,参考
使用snpEff对VCF进行注释 - 简书 (jianshu.com)
#直接手动创建 在~/snpEff/目录中,创建一个文件夹:data 在~/snpEFF/data目录下,创建两个文件夹 (自己的想命名的物种名,这里假设是C)/ genomes/ 1.1.1在~/snpEFF/data/c 下面放我们的文件, CDS.fa, protein.fa, genes.gff(这个是我们物种的gFF文件) #如果没有CDS,或者是protein文件,就直接在命令后面加-noCheckCds -noCheckProtein,可以去官网看看为什么,这个基本上不影响最终注释结果 1.1.2在~/snpEFF/data/genomes/ 下面放我们的文件 C.fa 1.1.3~/snpEff/snpEff.config文件 vim snpEff.config直接进入然后看到data.dir =./data/ 注意这个地方要更改,直接改成这样就行了#别问,问就是卡了半天,就是路径问题emmm data.dir = data #c c.genome:c
好了,我们现在已经把最基本的数据处理文件放到我们软件里面去了,这个地方我卡了半天emmm。反正慢慢来弄熟了都好办。
3.注释
刚刚是准备阶段,然后让我们的数据库生效,并且注释,一共两步
1.注意目录,~/snpEff
java -jar snpEff.jar build -gff3 -v c
#之前也说了,可以加上-noCheckProtein -noCheckCds
这里有一个检测报告,说不定后面能用得上,先截屏留个纪念一下
2.
接下来把我们的需要注释的vcf文件放在我们~/snpEFF文件下面,
#注意
2.1我们的染色体名称,需要注释的vcf染色体名称必须和gFF文件的染色体名称一致
如果不一致需要我们修改一下:
使用
2.2我们的染色体名称从1234开始,我们的gFF文件的染色体名称最好也是从1234开始,因此需要对我们的gFF文件进行处理,当然要是没处理问题也不大,我这里就算了,直接注释,等报错再说
java -jar snpEff.jar ann c c.vcf > c.snpeff.vcf
#这个代码不能查看特别细致的错误,所以我们可以使用官网查证,这里我又卡了半天,当然如果没强制要求可以不需要
java -Xmx8g -jar snpEff.jar -v -canon c c.vcf > c.snpeff.vcf -stats c.html
我们必须得承认这个错误足够多,emmm,查看找了好多没得解释的,只能翻烂官网
注意如果这个地方报错的话,类似一个都注释不出来,一定要记得,保持染色体的名称相同
4.错误解释
4.1我们得明白原始vcf文件怎么看
生信:1:vcf格式文件解读_vcf alt_f1r2-CSDN博客
网上一堆解释,我这边就简单说几句
CHROM POS ID REF ALT QUAL FILTER INFO FORMAT
1 841 . T C . . PR GT 0/0 0/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
相应是:
CHROM:染色体编号或ID。
POS:变异位点在染色体上的位置。发生变异的位置的第一个碱基所在的位置,
ID:变异ID,可以是rs号等。
REF:参考基因组碱基。
ALT:变异碱基,可能包含多个碱基。变异所支持的碱基类型及碱基数量,
QUAL:变异质量得分,表示该变异位点的可信度。
FILTER:过滤标志,表示该变异位点是否通过了质量控制等过滤步骤。
INFO:额外的变异信息,例如变异类型、功能注释、影响的转录本等。
FORMAT:样本基因型信息的格式。variants的格式,例如GT:AD:DP:GQ:PL
0/1表示杂合,1/1表示纯合
4.2注释之后的文件
4.2.1html文件
给你们看一下这个多出来的文件,一般我们会选择查看html的文件夹,但是我们会发现里面的图打不开因为画图代码是用的谷歌,爬个墙就OK了
2.0版本的弄到这边,当时有点事情耽搁了,今天我把理解SnpEff注释的东西给弄完,最近有点倒霉,希望大顺。
4.2.2注释的vcf.snpEff文件
接下来我们查看一下vcf多出来哪些信息,我这里随便截取一部分,linux命令提取第一行
1.grep -v "^#" file.txt | head -n 1
过滤掉#的行,取前1行
2.(我这里用了,awk列提取的命令,只保留位点和注释的信息)
awk '!/^#/ {print $1, $2, $3}' data.txt > wenjian,txt
1 841 PR;ANN=C|intergenic_region|MODIFIER|CHR_START-EVM_prediction_Chr1.1|CHR_START-evm.TU.Chr1.1|intergenic_region|CHR_START-evm.TU.Chr1.1|||n.841T>C||||||
接下来我们来稍稍解读一下,根据下面的规则
Annotation Type(描述了变异对蛋白质编码的基因的影响):
missense_variant:氨基酸改变的突变,可能会导致蛋白质功能改变。frameshift_variant:插入或删除碱基导致读框移位,可能会导致蛋白质完全改变。
stop_gained:导致编码区域产生提前终止密码子,导致蛋白质缺失或截短。
synonymous_variant:同义突变,不改变氨基酸序列。
intron_variant:发生在内含子区域,不直接影响蛋白质序列。
intergenic_region:位于基因之间的区域,对基因本身没有直接影响。
5_prime_UTR_variant和3_prime_UTR_variant:分别发生在基因的5'UTR和3'UTR区域,可能会影响转录后调控。
downstream_gene_variant和upstream_gene_variant:分别位于基因的下游和上游区域,可能会影响基因表达。
regulatory_region_variant:位于转录因子结合位点或其他调控元件,可能影响功能元件的调控作用。
Functional Impact(描述变异对蛋白质功能的影响):
HIGH(高影响):变异对蛋白质结构、功能或稳定性的影响较大,可能导致显著的功能改变或丧失。MODERATE(中等影响):变异对蛋白质结构、功能或稳定性的影响适中,可能导致一定程度的功能改变。
LOW(低影响):变异对蛋白质结构、功能或稳定性的影响较小,可能对蛋白质功能产生轻微影响或无明显影响。
MODIFIER(修饰因子):变异对蛋白质功能没有直接影响,通常发生在非编码区域或没有已知功能的区域。
Gene:一个基因ID,可能与该变异所在的基因相邻或靠近。
HGVS cDNA:
突变类型+基因名+cDNA位置+核苷酸变化:如c.123A>T表示在基因中的第123个核苷酸位置上发生了A到T的变化。突变类型+基因名+cDNA位置+碱基插入:如c.123_124insT表示在基因中的第123和124个核苷酸之间插入了一个T。
突变类型+基因名+cDNA位置+碱基缺失:如c.123delA表示在基因中的第123个核苷酸上发生了A的缺失。
突变类型+基因名+cDNA位置+碱基替换+碱基插入:如c.123A>TinsC表示在基因中的第123个核苷酸位置上发生了A到T的替换,并插入了一个C。
突变类型+基因名+cDNA位置+跳跃突变:如c.123_126delGTAA表示在基因中的第123到126个核苷酸上发生了GTAA的缺失。
SnpEff注释后一般会包括这些东西(问了GPT的,懒得翻官网了)
- 基因名称:注释可能会提供与该变异位置最相关的基因的名称。
- 功能类型:注释可能会指示该变异位置所在的基因区域的功能类型,例如编码区(coding sequence)、间基因区(intergenic region)、调控区(regulatory region)等。
- 作用效果:注释可能会提供关于该变异对基因功能的可能影响的信息,例如是否导致蛋白质结构改变、编码序列突变、剪接异常等。
- 突变类型:注释可能会指明该变异的具体类型,例如单核苷酸变异(Single Nucleotide Variant,SNV)、插入(Insertion)、缺失(Deletion)等。
- 基因组坐标:注释可能会提供该变异在基因组上的具体位置,如起始坐标和终止坐标。
再来看一下我们的注释
ANN=C|intergenic_region|MODIFIER|CHR_START-EVM_prediction_Chr1.1|CHR_START-evm.TU.Chr1.1|intergenic_region|CHR_START-evm.TU.Chr1.1|||n.841T>C||||||
这个注释大概就是, 大家随意看看,等之后我懂了我在来补充一下。
指出在该位置上发生了一种核苷酸变异,由碱基T变为C,指示该变异位置所在的基因区域的功能类型在间基因区(intergenic region),该变异对蛋白质功能的影响中等,
|CHR_START-EVM_prediction_Chr1.1这个我不太懂,可能是gff文件的注释信息,GPT搜索一下【"CHR_START" 仍然表示基因组的起始位置,而 "evm.TU.Chr1.1" 则可能是某个基因预测软件(如EVM)生成的、与该转录单元相关的标识符或名称】,反正就是坐标吧,
n.841T>C,表示变异发生在cDNA的第841个碱基上,从T突变为C。但是一般是c开头是cDNA,这里我也不是特别懂,【"n.841T>C" 中的 "n." 表示这是一个核酸变异,"841T>C" 则指明了具体的变异类型。】
还有一些其他文件大家可以去查看一下,这里不做多的解释。总体上来说,SnpEff我一开始想得过于复杂,其实都差不多
学习软件步骤的更新,
1.下载和官网,构建步骤看一个能看懂的,然后多翻一下官网,
2. 软件和理解性的问题从根本上找,比如画图代码,比如搜索,
3.记得总结以及处理好文件,文件不能乱,我构建过程中过于文件混乱浪费了不少时间,及时总结能够在下一次学习的 时候,方便你我他。
5,总结代码就两步
1,java -jar snpEff.jar build -gff3 -v c
#之前也说了,可以加上-noCheckProtein -noCheckCds
2,java -Xmx8g -jar snpEff.jar -v -canon c c.vcf > c.snpeff.vcf -stats c.html
6,如果需要EFF的注释信息的位点的话
1,java -jar snpEff.jar build -gff3 -v c
2,java -Xmx8g -jar snpEff.jar -v -canon -formatEff c c.vcf > c.eff.snpeff.vcf -stats c.html