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

  微生物群落在生态系统中发挥则重要功能,我们在对微生物群落进行分析时,会将不同分类水平(从门到属)的微生物类群的相对丰度与测定的某一生态功能进行相关性分析。但由于微生物类群数较多,又有不同的分类水平,将其包揽在一个图中,并显示不同的微生物类群的名字,会显得十分杂乱,因此我们尝试使用交互式的可视化来进行探索性分析。下面我们将结合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$rcorr[cor$p>0.05] <- 0corList[[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=1df0 <- 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]] <- list0j=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.mzph.cn/bicheng/3656.shtml

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

相关文章

leetcode-二叉树的镜像-91

题目要求 思路1 1.遍历一遍二叉树&#xff0c;将左边的结点对应创建一个右边的结点 2.用此方法空间复杂度O(n)&#xff0c;并不是最优 思路2 1.将一个结点的左右子树进行交换&#xff0c;如果左子树还有左右结点&#xff0c;就再交换左子树的左右结点&#xff0c;以此递归下去…

Java23种设计模式-行为型模式之模板方法模式

模板方法模式&#xff08;Template Method Pattern&#xff09;在超类中定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。模板方法模式使得子类可以在不改变算法结构的情况下&#xff0c;重新定义算法的某些步骤。 基本组成&#xff1a; Abstract &#xff08;抽…

富格林:安全落实防备诱导欺诈建议

富格林悉知&#xff0c;作为一项投资活动&#xff0c;炒黄金在近些年来备受欢迎&#xff0c;它交易灵活&#xff0c;投资者采取正规做单操作即可获取不错收益。但大家也要知道&#xff0c;投资存在一定风险&#xff0c;一定要做好防备虚假欺诈操作&#xff0c;避免诱导上当亏损…

单例模式(设计模式)

文章目录 概述懒汉式饿汉式双重加锁机制类级内部类方式单例模式适用场景Spring 的单例实现原理单例被破坏的五个场景单例的实现方式实现线程安全的单例模式 概述 单例模式&#xff1a;单例对象能保证在一个JVM中&#xff0c;该对象只有一个实例存在。保证被创建一次&#xff0…

Kubernetes:云原生时代的核心引擎

文章目录 一、Kubernetes简介&#xff1a;引领云原生潮流二、K8s的核心特性&#xff1a;自动化与智能化三、K8s的实践应用&#xff1a;打造高效云原生应用架构四、K8s的挑战与应对&#xff1a;安全与性能并重五、K8s的未来展望&#xff1a;无限可能与挑战并存《Kubernetes快速进…

【windows-搭建Ubuntu22LTS】

一、环境要求 1. windows版本要求 至少Windows 10 2020年5月(2004) 版, Windows 10 2019年5月(1903) 版&#xff0c;或者 Windows 10 2019年11月(1909) 版 2. 控制面板开启相关的程序(需要重启) 二、Microsoft store安装unbuntu 下载后直接运行&#xff08;稍微等会&#…

从开发角度理解漏洞成因(01)

文章目录 PHP开发漏洞环境&#xff08;SQL注入&#xff09;生成前端代码生成后端代码数据库写功能调试功能 测试SQL注入漏洞字符型注入布尔盲注 PHP开发漏洞环境&#xff08;SQL注入&#xff09; 持续更新中… 文章中代码资源已上传资源&#xff0c;如需要打包好的请点击PHPM…

亿道三防onerugged|工业车载电脑在港口正面吊上的应用

港口正面吊是港口作业中至关重要的设备&#xff0c;它承担着装卸集装箱等重要任务。作为专业人员&#xff0c;我深知港口作业的复杂性和挑战性。在这方面&#xff0c;亿道三防onerugged系列的工业车载电脑为港口正面吊的应用提供了一种创新的解决方案。 首先&#xff0c;工业车…

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq&#xff0c;一个是存储&…

理解与解决BouncyCastle库中“ASN1Primitive overrides final method equals”异常

理解与解决BouncyCastle库中“ASN1Primitive overrides final method equals”异常 引言错误原因分析应用场景及解决方案示例示例一&#xff1a;不同版本间的兼容性问题示例二&#xff1a;库之间的相互影响示例三&#xff1a;JDK版本适配问题 结论 引言 在Java开发中&#xff0…

springboot+vue新疆肉牛智慧牧场养殖系统

系统涉及的对象是奶牛。 系统使用员工有管理员和普通员工。 管理员有修改的权限&#xff0c;普通员工没有。 系统需要包含奶牛的编号&#xff0c;种类&#xff0c;体重&#xff0c;健康情况、生长情况、牛奶产量&#xff0c;以及上次更新数据时间等信息&#xff0c;管理员可以对…

关于权限的设计

首先系统权限&#xff0c;每个账号登录后&#xff0c;都需要知道这个账号允许访问哪些api&#xff0c;哪些数据权限&#xff08;一般是指其他账号的一些数据&#xff09; 这里就需要通过角色来关联。 --1.角色绑定菜单&#xff0c;每个菜单设计的时候包含了这个菜单会用到的所…

设计模式:合成复用原则(Composite Reuse Principle,CRP)介绍

合成复用原则&#xff08;Composite Reuse Principle&#xff0c;CRP&#xff09;是面向对象设计原则之一&#xff0c;它强调通过组合已有的对象来实现新的功能&#xff0c;而不是通过继承已有的类来实现。合成复用原则的核心思想是尽量使用对象组合而不是类继承&#xff0c;从…

Hive官方文档 join table 总结

Hive官方文档 join table 总结 join_table:table_reference [INNER] JOIN table_factor [join_condition]| table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition| table_reference LEFT SEMI JOIN table_reference join_condition| table_referen…

C语言中定义和声明的区别

定义: 编译器在创建一个对象时, 为该对象申请开辟了内存空间, 这个空间的名字就是变量或者对象名, 同一个变量名在某个区域只能定义一次, 重复定义会出现错误 声明有两种作用: 1. 告诉编译器, 这个变量或者函数, 我已经定义了 (开辟了空间了), 但是在别的地方, 我先说明一下…

HarmonyOS 实战开发-使用canvas实现图表系列之折线图

一、功能结构 实现一个公共组件的时候&#xff0c;首先分析一下大概的实现结构以及开发思路&#xff0c;方便我们少走弯路&#xff0c;也可以使组件更加容易拓展&#xff0c;维护性更强。然后我会把功能逐个拆开来讲&#xff0c;这样大家才能学习到更详细的内容。下面简单阐述…

C# 调整图像的亮度简单示例

操作顺序&#xff1a; 首先加载要调整亮度的图像。 然后通过循环遍历图像的像素&#xff0c;并根据需要增加像素的亮度值。 最后&#xff0c;将调整后的图像保存回原始文件。 代码如下&#xff1a; using System; using System.Drawing.Imaging;class Program {static void…

【Linux系统编程】基础指令(二)

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

架构师系列- 定时任务(二)- Quartz框架

quartz特点 Quartz是一个优秀的任务调度框架&#xff0c; 具有以下特点 强大的调度功能&#xff0c;例如支持丰富多样的调度方法&#xff0c;可以满足各种常规及特殊需求&#xff1b;负载均衡高可用 quartz 架构体系 Quartz 设计有四个核心类&#xff0c;分别是Scheduler(调度…

一个简单的java递归下降语法分析器例子

import parser.Parser; import parser.RecursiveDescentParser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arra…