【问题标题】:Calculate distances between groups (group-comparison using UniFrac or Bray-Curtis)计算组之间的距离(使用 UniFrac 或 Bray-Curtis 进行组比较)
【发布时间】:2019-07-22 13:29:18
【问题描述】:

我想问一下如何使用 R 中的加权 UniFrac 或 Bray-Curtis 方法计算组之间的距离。 我已经使用 UniFrac 方法获得了每个样本之间的距离。

library("phyloseq")
require(GUniFrac)
require(vegan)
require(ade4)

otu.tab <- t(otu_table(phy))
treefile <- phy_tree(phy)

# calculate the UniFracs
unifracs <- GUniFrac(otu.tab, treefile, alpha = c(0, 0.5, 1))$unifracs

# create
d5 <- unifracs[, , "d_0.5"]   # GUniFrac with alpha 0.5 

距离结果表为:

> d5
           SamA_1    SamA_2    SamB_1    SamB_2    SamC_1    SamC_2        
SamA_1  0.0000000 0.3939102 0.3972185 0.3846277 0.4052247 0.4187168  
SamA_2  0.3939102 0.0000000 0.2986860 0.3003682 0.3384096 0.3475723  
SamB_1  0.3972185 0.2986860 0.0000000 0.3549342 0.2997557 0.3457747  
SamB_2  0.3846277 0.3003682 0.3549342 0.0000000 0.3378881 0.3529470  
SamC_1  0.4052247 0.3384096 0.2997557 0.3378881 0.0000000 0.3828705 
SamC_2  0.4187168 0.3475723 0.3457747 0.3529470 0.3828705 0.0000000  

> sample_data(phy)
         Treat    Groups    
SamA_1     CON         A
SamA_2     CON         A
SamB_1   Treat         B
SamB_2   Treat         B
SamC_1   Treat         C
SamC_2   Treat         C

我想计算 A、B 和 C 组之间的距离,最终我想要一个距离表,例如“d5”。

哪个函数适合在 R 中计算组之间的距离表?

【问题讨论】:

  • 请指定使用的包
  • 是的,我编辑并描述了这些包。谢谢。

标签: r phyloseq


【解决方案1】:

这是一种使用 mctoolsr 包快速解决 Bray-Curtis 差异的方法。您还应该能够用 UniFrac 距离对象替换“dm”对象,但只需确保在计算 UniFrac 矩阵时,样本与 mctoolsr 对象的顺序相同(即 input$map_loaded)。或者,您可以将距离矩阵融合为长格式(例如使用reshape2::melt(),然后计算平均值和标准误差并最终绘制它,但这超出了您原始问题的范围。这是使用 mctoolsr 教程的示例。

# Calculate mean Bray-Curtis dissimilarities in mctoolsr
# See tutorial here https://github.com/leffj/mctoolsr
install.packages("devtools")
devtools::install_github("leffj/mctoolsr")
library(mctoolsr)
tax_table_fp = system.file('extdata', 'fruits_veggies_taxa_table_wTax.biom', 
                           package = 'mctoolsr')
map_fp = system.file('extdata', 'fruits_veggies_metadata.txt', 
                     package = 'mctoolsr')
input = load_taxa_table(tax_table_fp, map_fp)
input_rar = single_rarefy(input, 1000)
dm = calc_dm(input_rar$data_loaded)
dm_mean <- calc_mean_dissimilarities(dm, 
                                     input_rar$map_loaded, 
                                     "Sample_type")
dm_mean

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多