根据代表性序列预测OTU/ASV生活史策略——寡营养型or富营养型

一、原理介绍

         丰富的资源会促进细菌的生长,特别是富营养型细菌的生长。快速的生长需要大量的核糖体,富营养性细菌会持有更多的核糖体RNA操纵子(number of ribosomal RNA operons, rrn)。因此我们可以根据核糖体RNA操纵子的数目来对寡营养型和富营养型细菌进行区分,而且核糖体RNA操纵子的数目在16srRNA序列上保守,因此我们可以通过分类信息对核糖体RNA操纵子数进行预测。

二、实现过程

1.对代表性序列利用RDP分类器进行分类,获得RDP注释的OTU:

java -Xmx1g -jar ./dist/classifier.jar classify -c 0.5 -o classified.txt  yourpath/rep_otus_seqs.fasta

如果命令行运行困难可使用RDP的网站进行分类注释:http://rdp.cme.msu.edu/classifier/classifier.jsp

 该RDP分类器的命令行工具可在如下网址下载:https://sourceforge.net/projects/rdp-classifier/files/latest/downloa

代表性序列长这样:

输出结果长这样:

将获得的注释数据与rrnDB数据库按从genus到domain的顺序进行比较,配对上的核糖体RNA操纵子数目(number of ribosomal RNA operons, rrn)的平均值即为该OTU的rrn。

rrnDB数据库长这样:

比对的R代码:

classified <- readLines("~/rnn_predictor/classified.txt")
rrn <- read.delim("~/rnn_predictor/rrnDB-5.7_pantaxa_stats_RDP.tsv", header=TRUE)
rrn2 <- data.frame(rank = rrn$rank,name = rrn$name,mean = rrn$mean)
rm(rrn)
taxid = rep(0,length(classified))
rnn_copy = rep(0,length(classified))
res = data.frame(taxid,rnn_copy)
for (i in 1:length(classified)) {
  str <- strsplit(classified[i],"\t")[[1]]
  str2 <- str[which(str %in% c("genus","family","order","class","phylum","domain"))-1]
  res$taxid[i] = str[1]
  for (j in (0:length(str2))){
    if (j == length(str2)){
      res$rnn_copy[i] = "NA"
      break
      }
    if(str2[length(str2)-j] %in% rrn2$name){
      print(i)
      res[i,2] = rrn2[rrn2$name == str2[length(str2)-j],3][1]
      break
    }
  }
}
write.table(res,"~/Desktop/rnn_predict.txt",sep="\t",row.names=FALSE,col.names=TRUE,quote=FALSE)

获得的结果长这样:

        这样我们就获得了每个OTU的核糖体RNA操纵子数目(number of ribosomal RNA operons, rrn),富营养型的细菌往往有高的16srRNA基因的携带数,寡营养型细菌的16srRNA基因的携带数则较低,因此我们可以根据我们预测的结果推断该OTU的生活史策略。

       修改:上面的代码写于一个月前,现在来看觉得不符合R语言的编程习惯。上述代码使用了过多的for循环,特别是嵌套的for循环,这在R语言中是不提倡的,因为当循环过多时会严重制约运行速度,因此上述代码不适用于OTU数目较多(>5000)的情况。因此对上述的R代码进行了修改,但依然保持原来的代码作为提醒,写代码时要时常问自己这和问题:代码的计算量随数据量的增加是指数增加还是线性增加?

        修改后的代码如下:

classified <- readLines("./classified.txt")
rrn <- read.delim("../rrnDB-5.7_pantaxa_stats_RDP.tsv", header=TRUE)
rrn2 <- data.frame(rank = rrn$rank,name = rrn$name,mean = rrn$mean)
rm(rrn)
#get taxonomy annotation of each OTUID from variable "classified"
strwhich <- function(xstr) {
  str <- strsplit(xstr,"\t")[[1]]
  return (c(str[1],str[which(str %in% c("genus","family","order","class","phylum","domain"))-1]))
}
a <- lapply(classified,strwhich)
#get rnn copies by mapping taxonomy information of each OTUID to rrn database
maptax2rnn <- function(xstr){
  n <- tail(which(unlist(lapply(xstr,function(x) x%in%rrn2$name))),1)
  return(c(xstr[1],rrn2$mean[which(rrn2$name == xstr[n])[1]]))
}
b <- lapply(a, maptax2rnn)
#transform the data type to matrix
res <- matrix(unlist(b),nrow=length(b),ncol=length(b[[1]]),
              byrow=TRUE)
colnames(res)<-c("OTUID","rnn_copies")

write.table(res,"./rnn_predict.txt",sep="\t",row.names=FALSE,col.names=TRUE,quote=FALSE)

可通过以下资源重复上述过程:

根据代表性序列预测OTU/ASV生活史策略——寡营养型or富营养型-专业指导文档类资源-CSDN下载丰富的资源会促进细菌的生长,特别是富营养型细菌的生长。快速的生长需要大量的核糖体,富营养性细菌会持更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_43367441/80426535

更多R语言分析微生物生态学的资源可参考如下链接:

微生物共现网络与群落构建分析icon-default.png?t=N7T8https://mianbaoduo.com/o/works/240342

参考文献:

1. Exploiting rRNA operon copy number to investigate bacterial reproductive strategies

2. Nutrient supply controls the linkage between species abundance and ecological interactions in marine bacterial communities

觉得博主写地不错的话,可以买箱苹果,支持博主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长1994

您的鼓励有助于我创作更多高质量

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值