前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MicEco:计算Sloan随机性的另一方法

MicEco:计算Sloan随机性的另一方法

作者头像
Listenlii-生物信息知识分享
发布2020-11-19 17:19:22
1.6K0
发布2020-11-19 17:19:22
举报
文章被收录于专栏:Listenlii的生物信息笔记

前文: EM:Sloan的随机性模型方法 ISME+Microbiome:Sloan随机性方法的发展及代码 介绍了Sloan随机性方法的概念及计算。本文再提供一种计算途径MicEco。 Link: https://github.com/Russel88/MicEco/

安装

代码语言:javascript
复制
1library(devtools)
2install_github("Russel88/MicEco")

neutral.fit函数可以计算。输入只需一个OTU表,最后得到拟合的R2及期望的频率分布值。 neutral.rand是增强版,可以在校正16S rRNA基本拷贝数的基础上进行多次计算,

具体代码: https://rdrr.io/github/Russel88/MicEco/src/R/neutral.fit.R

代码语言:javascript
复制
 1#' Fit Sloan et al. (2006) Neutral Model
 2#'
 3#' Fit neutral model developed by Sloan et al. (2006, Environ Microbiol 8(4):732-740) and implemented by Burns et al. (2015, ISME J 10(3):655-664).
 4#' @param otu An OTU-table with taxa as columns and samples as rows.
 5#' @keywords neutral
 6#' @return A list of length two; first element contains fit statistics, the second element contains predictions.
 7#' @import bbmle
 8#' @export
 9
10neutral.fit <- function(otu){
11
12  # Frequency
13  otu.pa <- (otu>0)*1
14  freq <- apply(otu.pa, 2, mean)
15
16  # Individuals per community
17  N <- mean(apply(otu, 1, sum))
18
19  # Relative abundance
20  p <- apply(otu, 2, function(x) mean(x))/N
21
22  # Detection limit
23  d = 1/N
24
25  # Define likelihood function
26  neutral.ll <- function(m, sigma){
27    R = freq - pbeta(d, N*m*p, N*m*(1-p), lower.tail=FALSE)
28    -sum(dnorm(R, 0, sigma,log=TRUE))
29  }
30
31  # Fit neutral model
32  m.mle <- mle2(neutral.ll, start=list(m=0.01, sigma=0.1),method="Nelder-Mead")
33
34  # R-squared
35  gRsqr <- 1 - exp(-as.numeric(logLik(m.mle))/length(p))
36
37  # Predictions
38  freq.pred <- pbeta(d, N*m.mle@coef['m']*p, N*m.mle@coef['m']*(1-p), lower.tail=FALSE)
39  pred.ci <- binconf(freq.pred*nrow(otu), nrow(otu), return.df=TRUE)
40
41  # Bind results
42  stats <- cbind(m.mle@coef['m'], m.mle@details$value,gRsqr , N, nrow(otu), length(p), d)
43  pred <- cbind(p, freq, freq.pred, pred.ci[,2:3])
44
45  results <- list(stats,pred)
46  return(results)
47}

这个代码和上文ISME的基本一致,但是一些细节的地方略有不同,如这个没有用非线性最小二乘拟合法对R2进行拟合。结果包含两个列表,第一个中分别为m,beta分布特征值,R2,N,样本量,相对丰度p的长度,丰度阈值d。第二个中分别为每个OTU的相对丰度p,发生率freq,预测的理论发生率freq.pred,及上下界lower和upper。

我测试这两种方法的结果,略有差别。上文最后得到的结果中,m为0.02013109,R2为0.06957435。本文的方法m和R2都略低。根据第二个列表的结果即可画图,下篇继续~。

另外,MicEco还有一些其他使用的功能。 1.Phyloseq的拓展: ps_prune:根据丰度或发生率剪切OTU ps_venn:venn图(基于eulerr::euler) ps_euler:Euler图 ps_pheatmap:热图 (基于pheatmap::pheatmap) rcurve:稀释曲线 (基于vegan::rarefy) 2.杂项: adonis_OmegaSq:adonis模型计算无偏效应量 WdS.test:基于距离的多变量方差分析,adonis的替代 UniFrac.multi:UniFrac 距离,树上随机取root proportionality:计算OTU比例

3.16S拷贝数相关: community_rrna:计算样本平均16S拷贝数 rarefy_rrna:拷贝数校正过的稀释曲线

4.beta多样性零模型 ses.UniFrac:UniFrac的标准效应量 ses.comdist:MPD标准效应量 ses.comdistnt:MNTD标准效应量

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Listenlii 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档