交互式探索微生物群落与生态功能的关系

news2024/11/25 20:49:39

  微生物群落在生态系统中发挥则重要功能,我们在对微生物群落进行分析时,会将不同分类水平(从门到属)的微生物类群的相对丰度与测定的某一生态功能进行相关性分析。但由于微生物类群数较多,又有不同的分类水平,将其包揽在一个图中,并显示不同的微生物类群的名字,会显得十分杂乱,因此我们尝试使用交互式的可视化来进行探索性分析。下面我们将结合R语言和javascript,来实现这一任务。考虑到微生物生态学方面的同学对JavaScript可能比较陌生,我们也提供了网络工具,为网友在线探索分析微生物各类群与生态功能的关系提供便利。

实现的效果:可点击该连接查看实现的效果,TreeCorrelation,鼠标停留在每一个节点可以显示每个节点的微生物类群名称。

例如,当鼠标停留在图中的蓝色节点时会显示其对应的名称,鼠标移开后名称消失,保持图形的整洁。
在这里插入图片描述
看完了实现效果,下面具体介绍实现该交互式网页的方法

Step1:数据准备

  我们需要使用到两大类的数据:各水平相对丰度表测定的生态功能表

  • 门水平相对丰度表
  • 纲水平相对丰度表
  • 目水平相对丰度表
  • 科水平相对丰度表
  • 属水平相对丰度表
  • 生态功能表(测定的生态功能,或者对应的理化性质等)

  我们需要使用到个分类水平的相对丰度表,这个在进行完序列分析后都可以获得,其数据格式如下,这里以门水平的相对丰度表为例,纲、目、科、属水平的相对丰度表也类似。
在这里插入图片描述
准备好生态功能的数据表
在这里插入图片描述

Step2:利用R语言生成JSON文件
2.1 加载必要的包
library(jsonlite)
library(stringr)
library(psych)
2.2 读取文件
L2 <- read.delim("./icicle data/taxa_nifH_16s_L2.txt", row.names=1, check.names = FALSE)
L3 <- read.delim("./icicle data/taxa_nifH_16s_L3.txt", row.names=1, check.names = FALSE)
L4 <- read.delim("./icicle data/taxa_nifH_16s_L4.txt", row.names=1, check.names = FALSE)
L5 <- read.delim("./icicle data/taxa_nifH_16s_L5.txt", row.names=1, check.names = FALSE)
f <- read.delim("./icicle data/FUN.txt", row.names=1)
2.3 生态功能与各微生物类群的相关性分析
taxaList <- list(L2=L2,L3=L3,L4=L4,L5=L5)
corList <- list()
for(i in 1:length(taxaList)){
  cor <- corr.test(taxaList[[i]],f$s1)
  corr <- cor$r
  corr[cor$p>0.05] <- 0
  corList[[i]] <- corr
}
2.4 生成可视化需要的JSON文件
taxa_df <- list()
split_string <- strsplit(colnames(taxaList[[length(taxaList)]]), ";")
for(i in 1:length(taxaList)){
  if(i == length(taxaList)){
    taxa_df[[i]] <- colnames(taxaList[[i]])
  }
  else{
    taxa_df[[i]] <- sapply(split_string,function(x){paste(x[1:(length(x) - length(taxaList)+i)], collapse = ";")})
  }
}
df <- data.frame(taxa_df)
listn <- list()
n <- length(df)
for(m in 1:n){
  list4 <- list()
  if(m==1){
    for (i in 1:nrow(df)){
      list4[[i]] <- list(name=df[i,n],value=replace_na(corList[[n-m+1]][i],0))
    }
    listn[[m]] <- list4
  }
  else{
    j=1
    df0 <- df[!duplicated(df[,n-m+2]),(n-m+1):(n-m+2)]
    for (i in 1:nrow(df0)){
      if (!duplicated(df0[,1])[i]){
        list0 <- list(name=df0[i,1],value=replace_na(corList[[n-m+1]][j],0),
                      children=listn[[m-1]][df0[,1] %in% df0[i,1]])
        list4[[j]] <- list0
        j=j+1
      }
    }
    listn[[m]] <- list4
  }
}
list1 <- list(list(name="Bacteria",children=listn[[n]]))
2.5 导出JSON文件
json_string <- toJSON(list1, pretty = TRUE)
cat(json_string)
write(json_string,"./taxonomy.json")
Step3:将生成的JSON文件上传网页

打开网页:buildTreeCorrelation,选择并读取生成的JSON文件即可。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1626150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python利用tg机器人推送发消息从安装到使用(二)

上一篇请参考: python利用tg机器人推送发消息从安装到使用-CSDN博客 本篇主要针对第二种方式推送tg消息,也就是使用telegram库的Bot发送消息,不仅可以发送文本,还可以方便的发送超链接内容和图片。 不过,随着telegram库的升级等各种原因,目前网上很多代码都不能直接使…

汽车组装3D电子说明书更通俗易懂

激光打印机由于造价高、技术更先进&#xff0c;因此在使用和维护上需要更专业的手法&#xff0c;而对于普通客户来说并不具备专业操作激光打印机的技能&#xff0c;为了通俗易懂地让客户理解激光打印机&#xff0c;我们为企业定制了激光打印机3D产品说明书&#xff0c;将为您带…

【如此简单!数据库入门系列】之ER模型快速入门

文章目录 模式设计基本概念实体&#xff08;Entity&#xff09;属性&#xff08;Attributes&#xff09;实体集和键&#xff08;key&#xff09;关系&#xff08;Relationship&#xff09; ER图实体和属性关系 泛化与特化总结更多例子 模式设计 大家还记得什么是物理模式、概念…

竞赛课第九周(埃式筛法,矩阵乘法)

1.埃式筛法:求区间[2, n]内所有的素数对 【参考代码】 #include <bits/stdc.h> using namespace std;const int N 1e5; vector<int> prime; bool visit[N];int main() {int n;cin>>n;memset(visit, false, sizeof(visit));for(int i2; i<sqrt(n); i){i…

备考数通HCIE证书4点经验分享!

大家好&#xff0c;我是来自安阳工学院20级网络工程的刁同学&#xff0c;在2023年12月20日成功通过了华为Datacom HCIE认证&#xff0c;并且取得了笔试900多分&#xff0c;实验B的成绩。在此&#xff0c;我想把我的一些考证心得分享给正在备考的小伙伴们。 关于为什么考证 我…

滚珠丝杆有哪些应用场景?

在传动领域中滚珠丝杆是自动化设备和智能制造设备相结合的关键装置&#xff0c;在精密制造工艺、精密装配作业及现代物流系统等多元领域中&#xff0c;发挥着不可或缺的核心作用。其优点在于快速、高效、准确可靠和稳定。它能够在较小的转矩下产生很大的推力&#xff0c;所以被…

VOS3000加装登陆服务器安全防护系统有用吗

VOS3000是一款专业的软交换系统&#xff0c;它主要用于中小规模的VoIP运营业务&#xff0c;包括运营费率设定、套餐管理&#xff0c;账户管理、业终端管理、网关管理、数据查询、卡类管理、号码管理、系统管理等功能1。而关于加装登陆服务器安全防护系统是否有用&#xff0c;这…

用Scrapy编写第一个入门项目(基础四件套:spider,pipeline,setting,items)

简介&#xff1a;scrapy是一个用于爬取网页并提取数据的应用框架&#xff0c;也可用于提取API数据 写在前面&#xff1a;只想看scrapy的童鞋子请跳过5-7直接step8&#xff09; step5&#xff0c;6是xpath和css入门&#xff0c;用于提取数据&#xff1b; step7是文件储存方式&…

软件设计师-重点的创建型设计模式

一、简单工厂&#xff1a; 简单工厂模式属于创建型模式&#xff0c;但不属于23种设计模式之一。 软考中图 二、工厂方法&#xff1a; 意图&#xff1a; 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 结…

c++在visual studio上的默认配置

右键 新建项 右键源文件 属性

解决-Oracle 19c RAC 安装时节点连接性问题

第二天&#xff0c;联系了服务器管理员在下午得到了修复&#xff0c;虚拟网段的IP失效了&#xff0c;需要重新分配&#xff0c;并且虚拟IP没有网关&#xff0c;所以ping 网关ping 不通。 因为在一节点装了集群软件&#xff0c;所以需要继续清理环境。 准备完成&#xff0c;经过…

【开源项目】经典数字孪生案例分享~数字孪生看守所管理平台

数字孪生看守所管理平台&#xff0c;基于数字孪生、物联网IOT、云计算等技术&#xff0c;对监狱道路以及各区域进行网格化管理&#xff0c;实现对网格内“人、地、事、物、情”等要素的全方位动态管控。 将视频监控和应急预警系统相结合&#xff0c;遇到重大突发事件时&#xf…

【C++】哈希思想

目录 哈希介绍&#xff1a; 一&#xff0c;位图 1-1&#xff0c;位图的认识 1-2&#xff0c;位图的简单实现 1-3&#xff0c;位图的应用 二&#xff0c;布隆过滤器 2-1&#xff0c;布隆过滤器的认识 2-2&#xff0c;布隆过滤器的简单实现 2-3&#xff0c;布隆过滤器的…

【产品经理修炼之道】- 需求挖掘之手机话费充值

画原型图从来就不是面试考察的重点&#xff0c;分析、解决问题才是产品经理的核心能力。那么该如何积累产品经验呢&#xff1f;本文以以「手机话费充值」为案例&#xff0c;分享整个设计流程和思路&#xff0c;希望对你有所启发。 不少产品新人有个误区&#xff1a;产品经理的日…

ThingsBoard处理设备上报的属性并转换为可读属性

一、前言 二、案例 1、AI生成JSON数据体 2、将json数据体直接通过遥测topic发送查看效果 3、可查看目前整个数据都在一起 ​编辑 4、配置附规则链路 5、对msg的消息值&#xff0c;进行数据的转换&#xff0c;并从新进行赋值。 6、规则链路关联关系 7、再次通过MQTT发送遥…

顺通鞋厂在线订单系统:优化订单流程,降低运营成本

引入在线订单系统成为企业优化订单流程、降低运营成本的有效途径。在线订单系统能够将订单信息实时共享给企业内部的各个部门以及外部供应商和客户。在线订单系统能够通过自动化处理订单流程&#xff0c;减少人工干预和重复劳动。在线订单系统通过优化订单流程&#xff0c;实现…

1.C++入门(上)

目录 1.C关键字 2.命名空间 作用域方面的优化 a.命名空间定义 b.命名空间使用 3.C 输入&输出 1.C关键字 C有63个关键字&#xff0c;C语言有32个关键字&#xff0c;存在重叠如荧光笔标出 2.命名空间 作用域方面的优化 如果变量&#xff0c;函数和类的名称都存在于全…

【C++】C++中的构造函数和析构函数详解

欢迎来到CILMY23的博客 本篇主题为&#xff1a;C中的构造函数和析构函数详解 个人主页&#xff1a;CILMY23-CSDN博客 系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 写在前头&#xff1…

【算法一则】【动态规划】求二维数组可组成的最大正方形

题目 在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内&#xff0c;找到只包含 ‘1’ 的最大正方形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1","0&…

为何鸿蒙开发成为求职市场的香饽饽 ?

在当今社会&#xff0c;技术的快速发展与更新迭代使得职场竞争愈发激烈。对于求职者来说&#xff0c;掌握一门热门且前景广阔的技术&#xff0c;无疑是获得理想工作的关键。鸿蒙开发&#xff0c;作为华为自主研发的操作系统开发技术&#xff0c;正逐渐成为求职市场的热门选择。…