用R语言对vcf文件进行数据挖掘.2 方法简介
2021-07-29 本文已影响0人
Jason数据分析生信教室
目录
1.读取数据
vcfR
可以直接读取vcf格式的数据。如果同时读取参照序列fasta格式的序列文件和gff格式文件的注释文件还可以获取更完整的信息(此步骤并非必须,可以只读取vcf数据)。在此处便于重复用到了pinfsc50
包。这个包里是植物致病微生物的基因序列测序结果。包含了一个vcf文件,一个fasta文件和一个gff文件。
1.1 整合数据
pkg <- "pinfsc50"
vcf_file <- system.file("extdata", "pinf_sc50.vcf.gz", package = pkg)
dna_file <- system.file("extdata", "pinf_sc50.fasta", package = pkg)
gff_file <- system.file("extdata", "pinf_sc50.gff", package = pkg)
1.2 用vcfR
读取vcf数据
library(vcfR)
vcf <- read.vcfR( vcf_file, verbose = FALSE )
1.3 用ape
读取fasta数据
这里用到参照序列的数据。
dna <- ape::read.dna(dna_file, format = "fasta")
1.4 读取gff格式的注释文件
gff <- read.table(gff_file, sep="\t", quote="")
当这些数据被读取到内存的时候就可以开始对染色体名字或者其它一些东西进行修改了。由于vcfR
更擅长对的单独染色体进行分析,所以当你的基因过大或者有很多样本的时候,建议对数据进行拆分。
2. 建立chromR
项目
读取完数据以后就可以建立chromR
,来对数据进行详细的分析。
library(vcfR)
chrom <- create.chromR(name='Supercontig', vcf=vcf, seq=dna, ann=gff)
3. 对chromR
进行进一步处理
首先对数据进行初步的可视化,
plot(chrom)
![](https://img.haomeiwen.com/i18174126/a4f15561466ea525.png)
我们在上面的图里得到很多信息,比方说测序深度(DP)的峰在500,但是拖着尾巴,这个尾巴表示数据里包含着CNV信息。然后比对质量(MQ)的峰值在60,于是我们可以以60为中心对数据进行过滤。
使用masker
可以对数据进行过滤标记。然后可视化过滤以后的数据。
chrom <- masker(chrom, min_QUAL = 1, min_DP = 300, max_DP = 700, min_MQ = 59.9, max_MQ = 60.1)
plot(chrom)
![](https://img.haomeiwen.com/i18174126/d3d26c0c12ddef0c.png)
是不是顺眼多了。当然我们也可以看一下SNP的分布情况。注意右下角的图。
chrom <- proc.chromR(chrom, verbose=TRUE)
plot(chrom)
![](https://img.haomeiwen.com/i18174126/53999725bc70bedf.png)
4. 数据可视化
用chromoqc()
可以对数据进行更完整的可视化。包括外显子内含子的分布,GC含量的分布等等。
chromoqc(chrom, dp.alpha=20)
![](https://img.haomeiwen.com/i18174126/c95e053e79dc2622.png)
5. 数据输出
最后可以用函数write.vcf()
把数据输出成新的vcf文件。
之后的文章里会有更加详细的说明