首页 > 其他分享 >准备数据

准备数据

时间:2024-04-30 11:00:51浏览次数:25  
标签:样本 dataset 准备 table 多样性 数据 OTU

(一)准备示例数据

加载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

相关文章

  • 使用PowerDesigner连接数据库并反向工程生成所有表及关系
    配置对数据库的JDBC连接时,总是提示连接失败!也没有任何其他信息,查阅网上资料并实际验证,按如下步骤可以成功:1、因为PowerDesigner是32位的程序,需要使用x86-32位版本的JDK2、配置PowerDesigner-》Tools-》GeneralOptions-》variables ,配置jar、java等路径配置为32位JDK3、......
  • openGauss 删除表中数据
    删除表中数据在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。使用DELETE命令删除......
  • openGauss 数据库基础概念介绍
    相关概念数据库数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。表空间在openGauss中,表空间是一个目录,可以存在多个,里面存储的是它所......
  • openGauss 设置账本数据库
    设置账本数据库账本数据库概述查看账本历史操作记录校验账本数据一致性归档账本数据库修复账本数据库详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 设置数据库审计
    设置数据库审计审计概述查看审计结果维护审计日志设置文件权限安全策略统一审计策略概述详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 设置透明数据加密_TDE
    设置透明数据加密(TDE)概述透明数据加密(TransparentDataEncryption),是数据库在将数据写入存储介质时对数据进行加密,从存储介质中读取数据时自动解密,防止攻击者绕过数据库认证机制直接读取数据文件中的数据,以解决静态数据泄露问题。该功能对于应用层几乎透明无感知,用户可根据需要......
  • laravel 监听数据库查询
    laravel监听数据库查询DB::listen在Laravel框架中,DB::listen是一个监听器,用于监听数据库查询。这段代码注册了一个闭包(匿名函数)作为监听器,当执行数据库查询时,闭包会被调用,并且传递一个包含查询信息的对象作为参数。在这个例子中,传递给闭包的参数是$query,它包含了执行的SQL语句......
  • 保险公司数据中心同步数据方案,该怎么选才既合规又易于管理?
    保险公司数据中心是一种集中存储、处理和管理保险公司数据的设施。它由一系列硬件和软件组成,包括服务器、存储设备、网络设备等,以提供一个高效、安全和可靠的环境来处理和存储大量数据。 在保险公司的运营中,数据中心扮演着至关重要的角色。它支持保险公司的核心业务系统,如保单......
  • SQL实战(二)——数据类型
    MySQL数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以......
  • SQL Server实战三:数据库表完整性约束及索引、视图的创建、编辑与删除
      本文介绍基于MicrosoftSQLServer软件,实现数据库表完整性约束、索引与视图的创建、编辑与删除等操作的方法。目录1交互式为数据库表S创建PRIMARYKEY约束2交互式创建数据库表TEST_SC,创建PRIMARYKEY约束3T-SQL创建数据库表T的PRIMARYKEY约束4T-SQL创建数据库表TEST_C,以......