(一)准备示例数据
加载microeco
包:
library(microeco)
加载示例数据集:
data(sample_info_16S)
data(otu_table_16S)
data(taxonomy_table_16S)
data(phylo_tree_16S)
data(env_data_16S)
这些行代码加载了一组示例数据,包括:
sample_info_16S
:样本信息表,一般包含每个样本的元数据。otu_table_16S
:特征表(OTU表),记录了各样本中各操作分类单元(OTU)的丰度。taxonomy_table_16S
:分类学分配表,包含OTU的分类信息。phylo_tree_16S
:系统发育树(非必需),用于系统发育分析。env_data_16S
:环境数据表,如果样本信息表中没有包含环境数据,则需要单独加载。
使用ape
包读取系统发育树(如果需要):
系统发育树通常以Newick格式存储,可以使用ape
包的read.tree
函数读取。这部分代码并未显示在您提供的代码中,但通常会使用类似下面的代码行来实现:
library(ape)
phylo_tree <- read.tree("path_to_newick_file")
加载magrittr
包:
library(magrittr)
固定随机数生成器:
set.seed(123)
设置绘图主题:
library(ggplot2)
theme_set(theme_bw())
确保 sample_table、otu_table 和 tax_table 的数据类型都是格式,如下部分所示。
dataset <- microtable$new(otu_table = otu_table_16S)
dataset <- microtable$new(otu_table = otu_table_16S, sample_table = sample_info_16S)
这行代码在R中创建了一个新的microtable
对象,这是microeco
包中用于存储和操作微生物生态数据的一个重要类。这里,通过使用$new()
函数来初始化这个对象,并将OTU表(otu_table_16S
)作为参数传递给otu_table
参数。
(二)微表类中的函数
使用base::subset()
函数筛选:
dataset$tax_table %<>% base::subset(Kingdom == "k__Archaea" | Kingdom == "k__Bacteria")
使用base::subset()
函数从tax_table
中筛选出Kingdom列为“k__Archaea”或“k__Bacteria”的行。这是直观且易于理解的数据筛选方式。%<>%
操作符确保筛选后的表直接更新原tax_table
对象。
使用grepl()
函数筛选:
dataset$tax_table %<>% .[grepl("Bacteria|Archaea", .$Kingdom), ]
使用grepl()
函数进行筛选,grepl()
是用于模式匹配的函数,这里匹配的模式是字符串“Bacteria”或“Archaea”。grepl()
返回一个逻辑向量,指示Kingdom
列中每个元素是否匹配指定的模式。.[...]
是一种更灵活的数据筛选方法,它可以根据条件直接从数据框中选择行。
两种方法各有特点:subset()函数更直观,易于编写和理解,适合简单条件。
使用grepl()可以实现更复杂的文本匹配,这在处理包含模式匹配的复杂条件时特别有用。
dataset$filter_pollution(taxa = c("mitochondria", "chloroplast"))
用microeco
包中的filter_pollution
方法来过滤掉dataset
对象中认为是污染的分类,如"mitochondria"(线粒体)和"chloroplast"(叶绿体)。这些通常在微生物组数据分析中被视为非目标DNA,因为它们来源于宿主组织或环境中的植物碎片,而非样本中的微生物。
整理数据集:
dataset$tidy_dataset()
调用了microtable
对象的tidy_dataset
方法,该方法用于整理和标准化数据集,使之适合进行后续的分析。
计算并查看样本总数的范围:
dataset$sample_sums() %>% range
调用sample_sums
方法计算每个样本的OTU总数。然后,使用%>%
管道操作符将结果传递给range
函数,该函数用于计算和返回数值数据的范围(最小值和最大值)。
标准化样本中的测序深度:
dataset$rarefy_samples(sample.size = 10000)
dataset$rarefy_samples(sample.size = 10000)
:dataset
:之前通过microeco
包创建的microtable
对象。$rarefy_samples()
:这是一个方法,用于对数据集中的每个样本进行稀释处理,使得每个样本中的测序读数(或OTU丰度总和)达到指定的数量。sample.size = 10000
:这个参数设置了每个样本稀释后的目标测序读数总数。在这个例子中,每个样本将被稀释至有10,000个读数,这意味着不管原始样本的测序深度如何,稀释后每个样本的读数总数都是10,000。
稀释(rarefaction)操作主要是为了消除由于样本间测序深度不同而带来的偏差。通过将所有样本的测序读数数量标准化到相同的水平,可以更公平地比较不同样本之间的微生物多样性和丰度。
将数据保存到本地文件:
dataset$save_table(dirpath = "basic_files", sep = ",")
dataset$save_table(dirpath = "basic_files", sep = ",")
:dataset
:这是之前通过microeco
包创建并处理的microtable
对象。$save_table()
:这是一个方法,用于将dataset
对象中的所有数据表(如OTU表、分类信息表、样本信息表等)导出到文件。dirpath = "basic_files"
:这个参数指定保存文件的目录路径。在这个例子中,所有的数据表将被保存在名为basic_files
的文件夹中。sep = ","
:这个参数指定文件的字段分隔符,这里使用逗号(,
),意味着导出的文件将是CSV格式(逗号分隔值格式),这种格式广泛用于数据存储和在不同软件间交换数据。
计算相对丰度:
调用microeco
包中的cal_abund
方法,这个方法用于计算dataset
对象中的微生物群落的相对丰度。在微生物生态学的数据分析中,相对丰度是一个重要的指标,它可以帮助了解不同微生物在样本中的比例和分布情况。
dataset$cal_abund()
:dataset
:这是之前通过microeco
包创建的microtable
对象。$cal_abund()
:这是一个方法,用于计算和更新数据集中每个操作分类单元(OTU)的相对丰度。相对丰度通常是指某一OTU在总OTU丰度中所占的比例。
dataset$save_abund(dirpath = "taxa_abund")
使用microeco
包中的save_abund
方法,目的是将dataset
对象中计算好的相对丰度数据保存到文件中。
dataset$save_abund(dirpath = "taxa_abund")
:dataset
:这是之前通过microeco
包创建并处理的microtable
对象。$save_abund()
:这是一个方法,用于将计算得到的相对丰度数据导出到文件。dirpath = "taxa_abund"
:这个参数指定保存文件的目录路径。在这个例子中,相对丰度数据将被保存在名为taxa_abund
的文件夹中。
dataset$save_abund(merge_all = TRUE, sep = "\t", quote = FALSE)
merge_all = TRUE
:这个参数指示方法合并所有数据表到一个文件中,通常在需要一个整合的数据视图时使用。sep = "\t"
:设置字段分隔符为制表符(tab),这是MPA格式(Metaphlan Profile Format)常用的分隔符,通常用于微生物群落分析软件。quote = FALSE
:表示在输出的文件中不要为字符串值添加引号,这有助于确保文件的兼容性,特别是在用于其他软件或脚本处理时。
dataset$save_abund(merge_all = TRUE, sep = "\t", rm_un = TRUE, rm_pattern = "__$|Sedis$", quote = FALSE)
rm_un = TRUE
:启用这个选项会移除分类信息未确定的OTU(操作分类单元)。这通常涉及到删除那些标签为“unclassified”或类似的数据行。rm_pattern = "__$|Sedis$"
:这是一个正则表达式,用于指定要移除的OTU的具体模式。这里的模式"__$|Sedis$"
表示移除那些分类名以双下划线结尾(表示分类不明确的情况)或者分类名为“Sedis”的OTU。
计算 alpha 多样性:
dataset$cal_alphadiv(PD = FALSE)
使用microeco
包的cal_alphadiv
方法计算dataset
对象中的样本的α多样性指数。α多样性(alpha diversity)是生态数据分析中的一个重要指标,它描述的是单个样本内部的物种多样性。
dataset$cal_alphadiv(PD = FALSE)
:dataset
:这是之前通过microeco
包创建的microtable
对象。$cal_alphadiv()
:这是一个方法,用于计算数据集中每个样本的α多样性指数。PD = FALSE
:这个参数指定是否计算物种丰富度的系统发育多样性(Phylogenetic Diversity, PD)。当PD = FALSE
时,方法将不计算系统发育多样性指数,仅计算基于种类丰富度和均匀度的多样性指数,如Shannon指数或Simpson指数。
在生态和环境微生物学研究中,α多样性是衡量生态系统健康和稳定性的关键指标。通过计算不同样本的α多样性,研究者可以评估和比较不同环境或实验处理条件下生物群落的复杂性和生物多样性。
dataset$save_alphadiv(dirpath = "alpha_diversity")
使用microeco
包中的save_alphadiv
方法将计算得到的α多样性指数保存到文件中。
# unifrac = FALSE means do not calculate unifrac metric
# require GUniFrac package installed
dataset$cal_betadiv(unifrac = TRUE)
# return dataset$beta_diversity
class(dataset$beta_diversity)
# save dataset$beta_diversity to a directory
dataset$save_betadiv(dirpath = "beta_diversity")
在microeco
包中计算β多样性(beta diversity),查看β多样性对象的类(class),并将结果保存到文件中。
dataset$cal_betadiv(unifrac = TRUE)
dataset
:这是一个microtable
对象,之前已经通过microeco
包创建。$cal_betadiv()
:这是一个方法,用于计算数据集中样本之间的β多样性。β多样性衡量不同样本之间的微生物组成差异。unifrac = TRUE
:这个参数指定使用Unifrac距离度量来计算β多样性。Unifrac是一种考虑物种间系统发育关系的β多样性度量方法,需要使用系统发育树信息。注意,使用Unifrac度量时需要先确保已安装GUniFrac
包,并且已加载相关的系统发育树数据。
class(dataset$beta_diversity)
class()
:这是R的一个基本函数,用于返回对象的类别信息。在这里,它用于查看beta_diversity
对象的数据类型,这可以帮助你了解如何进一步处理和分析这个对象。
dataset$save_betadiv(dirpath = "beta_diversity")
$save_betadiv()
:这是一个方法,用于将计算得到的β多样性数据导出到文件。dirpath = "beta_diversity"
:这个参数指定保存文件的目录路径。在这个例子中,β多样性数据将被保存在名为beta_diversity
的文件夹中。
(三)微表类中的函数
合并分类数据
test <- dataset$merge_taxa(taxa = "Genus")
dataset$merge_taxa(taxa = "Genus")
:这个方法用于按照指定的分类级别(在此例中为“Genus”,即属级)合并数据。这意味着所有属于同一属的操作分类单元(OTU)将被合并成一个单一的数据点,其丰度将是该属下所有OTU丰度的总和。taxa = "Genus"
:指定要合并的分类学级别为属级。test
:将合并后的数据赋值给新变量test
。这样做通常是为了保持原始数据集dataset
的完整性,同时在新的数据集test
上进行进一步分析。
合并样本数据
test <- dataset$merge_samples(use_group = "Group")
dataset$merge_samples(use_group = "Group")
:这个方法用于按照指定的分组标准合并样本。在这里,它将根据某个分组变量(如实验条件、地理位置、时间点等)来合并样本,每个分组的所有样本数据将被合并成一个单一样本。use_group = "Group"
:指定用于合并样本的分组变量名称。这意味着数据集中包含一个名为“Group”的列,此列用于指示每个样本属于哪个分组。
(四)样本子集
克隆数据集
group_CW <- clone(dataset)
clone(dataset)
:这个函数用于创建dataset
对象的一个完整副本。在微生物生态数据分析中,这种操作通常在你想保持原始数据不变的同时对数据的一个子集进行修改或分析时非常有用。这确保了原始数据集的完整性和数据处理的灵活性。
选择特定的样本组
group_CW$sample_table <- subset(group_CW$sample_table, Group == "CW")
# 或者使用:
# group_CW$sample_table <- subset(group_CW$sample_table, grepl("CW", Group))
- 这里有两种方法来筛选样本表中属于“CW”组的样本:
- 第一种方法使用
subset()
函数直接比较Group
列是否等于"CW"。 - 第二种方法使用
grepl()
函数进行模式匹配,这在Group
名称中包含“CW”但不完全是“CW”的情况下很有用(例如,“CW1”,“CW2”等)。
- 第一种方法使用
清理数据集
group_CW$tidy_dataset()
$tidy_dataset()
:这个方法用于清理microtable
对象中的数据,包括去除稀有OTU、标准化数据等操作。这个步骤是在数据分析前准备数据的重要环节,可以提高分析的准确性和可靠性。
输出修改后的数据集
group_CW
(五)分类群的子集
克隆数据集
proteo <- clone(dataset)
选择特定的分类门
proteo$tax_table <- subset(proteo$tax_table, Phylum == "p__Proteobacteria")
# 或者使用:
# proteo$tax_table <- subset(proteo$tax_table, grepl("Proteobacteria", Phylum))
- 这里有两种方法来筛选属于“Proteobacteria”门的分类:
- 第一种方法使用
subset()
函数,直接比较Phylum
列是否完全等于"p__Proteobacteria"。 - 第二种方法使用
grepl()
函数,它对Phylum
列中的字符串进行模式匹配,适用于Phylum
名称包含“Proteobacteria”但可能还有其他前缀或后缀的情况。
- 第一种方法使用
清理数据集
proteo$tidy_dataset()
标签:样本,dataset,准备,table,多样性,数据,OTU From: https://www.cnblogs.com/wzbzk/p/18167591