基因数据存在污染?不要怕!三分钟教会你使用decontam包,让你的数据干净无比!!






基因数据存在污染?不要怕!三分钟教会你使用decontam包,让你的数据干净无比!!

小果  生信果  2024-03-15 19:03:21

作为一名生物信息学学生,我们都深知保持基因数据的纯净对研究结果的重要性,然而,基因数据很容易受到外部污染的影响,这可能会导致分析结果的不确定性。但是,不用担心!今天小果要向大家介绍的是处理基因数据污染问题的利器——decontam包。这个强大的工具可以识别和去除污染物,从而提高数据的准确性和可靠性。
接下来,就让小果带你一起深入了解decontam包的使用方法。我们将学习如何安装和配置decontam包,如何进行数据准备来确保数据格式符合decontam包的要求,最重要的是我们将演示如何使用decontam包识别潜在的污染物,并使用可视化工具辅助来去除污染物,使数据变得干净无比。通过掌握decontam包的使用方法,同学们就可以轻松处理基因数据中的污染问题,确保数据的纯净和准确性。小果希望同学们能够通过本次演示,更加熟练地运用decontam包,为自己的研究工作提供可靠的数据基础,让基因数据分析更加准确和可靠!接下来就正式开启我们今天的学习吧!          
本次介绍的R包在服务器可以更加方便运行,如果没有自己的服务器欢迎联系我们使用服务器租赁~



公众号后台回复“111”

领取本篇代码、基因集或示例数据等文件

文件编号:240314

需要租赁服务器的小伙伴可以扫码添加小果,此外小果还提供生信分析,思路设计,文献复现等,有需要的小伙伴欢迎来撩~

decontam包的介绍
decontam包是一个用于处理环境DNA数据的R包,主要用于识别和去除数据中的污染物,提高数据的准确性和可靠性。它提供了统计方法和模型,帮助用户识别DNA数据中可能存在的污染物,通过分析数据,用户可以获得关于潜在污染物的信息,并生成相应的报告。decontam包还提供了数据可视化工具,帮助用户更好地理解和分析DNA数据。用户可以绘制污染物识别结果的图表和图形,以便更直观地了解数据。
decontam包的安装
需要R语言版本为4.3,在控制台中输入以下命令:
if (!require("BiocManager", quietly = TRUE))    install.packages("BiocManager")BiocManager::install("decontam") # 在BiocManager环境下安装decontam查看是否安装成功packageVersion("decontam") # 查看decontam版本
显示为1.22.0版本,则表示安装成功。       
decontam包使用示例
载入需要的包:
decontam包要求特征表以标准R矩阵格式进行输入,同时decontam包与来自phyloseq包的phyloseq格式的对象兼容,因此在使用decontam包时可以载入phyloseq包,旨在便于标记基因和宏基因组数据集的分析,同时还需要载入ggplot2进行结果图示输出。
library(phyloseq); packageVersion("phyloseq") # 载入phyloseq包并查看phyloseq包版本。library(ggplot2); packageVersion("ggplot2") # 载入ggplot2包并查看ggplot2包版本。library(decontam); packageVersion("decontam") # 载入decontam包并查看decontam包版本。
显示如下图:
数据准备:
本次采用示例数据MUClite.rds,同学们可以根据课题需求替换为自己的课题数据。
ps <- readRDS(system.file("extdata", "MUClite.rds", package="decontam")) # 提取MUClite.rds文件数据到ps变量    ps # 显示ps数据信息
该phyloseq对象是由16S r RNA基因V4区扩增子测序数据通过DADA2算法推断的1951个扩增子序列变异( ASVs )表,除此之外,该phyloseq对象还包括使用decontam所需的样本元数据信息。
head(sample_data(ps)) # 查看原始样本数据
关键的样本变量是quant _reading,它是通过荧光强度测量每个样本中的DNA浓度,而Sample_or_Control则告诉我们哪些样本是阴性对照。
识别并去除污染序列:
我们将使用的污染物识别方法是”frequency”方法。在该方法中,每个序列特征的频率与对应DNA浓度的构成的函数分布被用于识别污染物。在我们的phyloseq对象中,’quant_reading ‘是包含浓度信息的样本变量:
contamdf.freq <- isContaminant(ps, method="frequency", conc="quant_reading") # 使用frequency方法识别污染序列    head(contamdf.freq) # 显示结果显示如下图所示:
该处理过程返回了一个具有若干列的数据框,最重要的是$p指用于分类污染物的概率。$contaminant,表明相关的序列特征是污染物的统计数值是否超过了用户设定的阈值,超过则显示为TRUE,我们没有指定阈值,相当于采用默认值threshold = 0.1。
接下来让我们一起来看看清晰的非污染物以及清晰的污染物的frequency值看起来大致是什么样子:
plot_frequency(ps, taxa_names(ps)[c(1,3)], conc=”quant_reading”) + xlab(“DNA Concentration (PicoGreen fluorescent intensity)”) # 画出非污染物与污染物对比图
显示如下图所示:
   
在该图中,虚线显示了非污染序列特征的模型,其frequency预计与输入DNA浓度无关。红线显示了污染物序列特征的模型,其frequency预计与输入DNA浓度成反比,因为在总DNA很少的样本中,污染DNA将占总DNA的较大比例。显然Seq3很好地拟合了红色污染模型,而Seq1则不然。
接下来,让我们确认一下几个被归类为污染物的ASV的frequences分布,以确保它们被判定为污染物的结果是准确无误。
set.seed(100) # 设置参数plot_frequency(ps, taxa_names(ps)[sample(which(contamdf.freq$contaminant),3)], conc="quant_reading") + xlab("DNA Concentration (PicoGreen fluorescent intensity)") # 做出被判定为污染物的ASV的frequences 分布图
结果如图所示:
由图可知,他们的分布规律都与污染物的分布相似。
接下来让我们去除这些污染物    
ps.noncontam <- prune_taxa(!contamdf.freq$contaminant, ps) # 去除污染物,赋值给新的变量。ps.noncontam # 展示去除结果
由图可知与初始数据数据相比,去除了58个污染的基因数据,随后我们去分析污染物过滤后的数据,来保证下游分析的准确性。          
以上就是使用decontam包进行基因序列去除污染的全部过程了,通过使用decontam包,我们成功识别并去除了环境DNA数据中的污染物,提高了数据的准确性和可靠性。同学们课后可以多加练习,把学到的基因序列去除污染的方法运用到自己的课题分析中。在科研工作中,保证数据的质量和准确性是至关重要的,而decontam包为我们提供了一个有效的工具,可以帮助我们实现这一目标。          
同学们如果觉得自己写代码麻烦,可以体验一下我们的云生信小工具,只需输入数据,即可轻松生成所需图表。立即访问云生信(http://www.biocloudservice.com/home.html),开启便捷的生信之旅!
   

小果还提供思路设计、定制生信分析、文献思路复现;有需要的小伙伴欢迎直接扫码咨询小果,竭诚为您的科研助力!


定制生信分析

服务器租赁

扫码咨询小果


往期回顾

01

1024G存储的生信服务器,两人成团,1人免单!

02

单个数据库用腻了?多数据库“组合拳”带你打开免疫浸润新思路!

03

孟德尔随机化的准备工作,GWAS数据的网站下载方法

04

跟着小果学复现-手把手带你拿下IF=46.9Nature 级别的主成分分析(PCA)图!!