MetaboAnalyst在多元数据分析中的应用
MetaboAnalyst是做代谢的R包,功能十分强大。也开发了web版本,代谢组学的分析这里不介绍,主要讲讲它开发的多组学分析的相关内容。
既然是做代谢的工具,即使是增加了多组学内容,肯定也是以代谢为核心。以代谢组为中心的多组学分析想想无非就是以下几点:多元变量统计分析、网络分析、pathway分析以及mGWAS或宏组学等,这个工具就有网络分析和pathway分析。下面我们一起来试试。
网络分析
我们先看看网络分析。我这里使用软件提供的demo数据,点击进去后,会有两种ID类型供选择。第一种是代谢物和基因,示例数据来自转录组和代谢组的关联分析;第二种是代谢物和KO的关联,示例数据来自mGWAS。
我们先用第一种试下。导入后,数据格式应该是这样:
提交后,数据list会和数据库中的ID进行匹配,如代谢物会和HMDB和KEGG中匹配(这就需要我们输入时提供这两种标准的代谢物ID)。
输入的基因ID可以是Symbol,ENTREZID和EnsembleID,同样地和KEGG数据库中K编号进行匹配。
输入的数据如果在数据库中信息缺失,会以灰色阴影显示;如果数据库中没有匹配,则以红色阴影显示。
再试下第二种,默认基因组是K编号,代谢组是HMDB号。
同样输入ID也要匹配到数据库中。因此两种输入方法殊途同归。
提交后,会有五种网络分析供选择。
1.KEGG Global Metabolic Network
这是啥子意思呢?其实就是映射到了ko01100(Metabolic pathway)这条基础通路中。
映射的图比较乱,因为这个通路太大了:
最上边调整图形,左上角列表是子通路及其对应的信息,左下角是选中的子通路的化合物,右边我圈出的是化合物映射在pathway中的位置。
这个图我觉得没什么太大用,看个人需求吧。
2. Metabolite-Disease Interaction Network
这个网络是研究代谢物和人类疾病的关联,关联数据是从HMDB获得的。
可以在这里下载相应的相互作用文件(.SIF),导入到Cytoscape中调节。我下载看了下,SIF文件格式是这样的:
没搞清楚pp指的是什么。继续点“Proceed”,查看下软件给我们做出的网络图。
我圈出了几块内容。界面和上面类似。化合物列表关系增加了点度中心性(degree)和中介中心性(betweenness)。从图我们可以看出,这种网络就是阐释化合物和疾病之间关系的。右边增加了一些功能探索按键,可分为上下调。
3. Gene-Metabolite Interaction Network
基因和代谢物互作网络,这是基于STITCH数据库的(专门做小分子互作网络的数据库,主要来自Pubmed)。结果和第二种网络一样,不再解释了。也有SIF文件可供下载。
4. Metabolite-Metabolite Interaction Network
代谢物和代谢物互作网络,也是基于STITCH数据库。略
5. Metabolite-Gene-Disease Interaction Network
代谢物和基因和疾病的互作网络,就是将上面的网络结合起来了。
总结:MetaboAnalyst的网络分析主要是基于已有数据库中的信息,包括和疾病以及小分子互作。没有相关性(spearman)网络分析,从输入的文件没有样本信息就可看出。不过这种网络分析比相关性网络更有生物学含义。
Pathway关联分析
下面我们看看Pathway的关联。还是使用软件提供的示例数据。可以提供多种基因ID输入,化合物仍只支持KEGG和HMDB。
检查输入ID。
参数设置如下:
- 富集分析的方法,超几何检验和fisher精确检验都可;
- 拓扑分析也有三种选项(点度中心性degree、接近中心性closeness和中介中心性betweenness),代谢组的富集分析要用到拓扑分析,拓扑分析旨在根据给定基因或代谢物在途径中的位置来评估其是否在生物学反应中起重要作用;
- Pathway数据库既然是关联,我们肯定选择全部(all);
- 整合的方法有两种:combine queries将基因和代谢物合并到一个查询列表中,以针对组合的pathway集进行富集分析(即经典富集分析)。combine p values的方法首先分别对基因和代谢物进行富集分析,然后使用Stouffer方法对各个p值进行加权合并。权重基于映射到该组学数据类型中所有路径的特征的百分比(即基于路径空间覆盖率的权重),这种方法仅适用于基因和代谢物均命中的那些pathway。所以我们最好用第一种。
综上,我们都用默认的参数就好了。提交后,得到如下结果:
上面是图,下面是表。
首先看第一个图。典型的KEGG pathway富集气泡图。纵轴好理解,P<0.01是阈值,横轴的Pathway Impact是什么意思呢?这里代谢组的富集分析基于拓扑分析(参考MetPA),我特意查了下,Wiki中的解释是这样的https://en.wikipedia.org/wiki/Metabolomic_Pathway_Analysis:MetPA employs a number of topological assessment tools to measure centrality or “hubness” in an objective manner (called Pathway Impact). Pathway impact is a combination of the centrality and pathway enrichment results. It is calculated adding up the importance measures of each of the matched metabolites and then dividing by the sum of the importance measures of all metabolites in each pathway.
可知这里富集是按权重来分析的,虽然没有富集因子那么简单粗暴,但含义是大致一样的,值越大越好。所以这个图看来,处于右上角的pathway是最可信的。
点击图中的点或列表中的名称是可以点击进入相应的pathway,右图。不过右图显示的不是完整的pathway,而是一部分(看了几个通路,也不知具体为什么这么显示),点击图上pathway或表中KEGG,能链接到KEGG官网中。
左边是每一步过程,标色表明运行完成。中间是结果,可供下载,但生成报告貌似生成不了,可能有bug吧。右边是过程代码,有R基础的童鞋可试试。
总结:pathway的联合分析以代谢为主,富集分析方法和传统方法不同。分析还是有限的,比如表达丰度信息没有包含进去。简单使用,供参考吧。
原文地址:https://www.cnblogs.com/jessepeng/p/11909860.html
推荐阅读
-
手绘 | 深入分析机器学习在 8 个风控场景中的应用
-
ZH-HPLC/RS485 传输模块在光伏逆变器发电数据采集器中的应用 + 宽带电力线载波 HPLC + 站式智能汇聚终端在分布式光伏并网数据采集与编程中的应用特点
-
35 岁实现财务*,腾讯程序员手握2300万提前退休?-1000万房产、1000万腾讯股票、加上300万的现金,一共2300万的财产。有网友算了一笔账,假设1000万的房产用于自住,剩下1300万资产按照平均税后20-50万不等进行计算,大约花上26-60年左右的时间才能赚到这笔钱。也就是说,普通人可能奋斗一辈子,才能赚到这笔钱。在很多人还在为中年危机而惶惶不可终日的时候,有的人的35岁,就已经安全着陆,试问哪个打工人不羡慕?但问题是有这样财富积累必然有像样的实力做靠山。没有人可以不劳而获。 看到这里,肯定有人说,那么对于普通人来说,卷可能真就成了唯一的出路。但是卷也有轻松的卷,“偷懒”的卷法,对于程序员而言,刨除掉一时无法改掉的开会传统占用的大部分时间,如何把有限的时间和精力放在真正重要的架构设计、需求设计上,而不是重复的造*,编码、改bug、手动测试。因此在科技改变生活的今天,学会使用AI工具成为程序员们的必备技能。 以全栈式全自动的软件开发工具飞算SoFlu软件机器人为例,作为全球首款面向微服务架构设计和最佳实践的软件机器人,SoFlu软件机器人改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。 而作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 FuncGPT(慧函数)具有五大核心能力: ● 自然语言:通过自然语言即可生成函数,降低软件开发门槛。 ● 秒级函数开发:全自动秒级开发函数,秒级完成,效率千倍提升。 ● 一站式函数开发应用:函数生成即可直接应用,效率、安全有保障。 ● 质量可靠:生成的函数代码符合业界规范、具备良好的可读性,符合最优解。 ● 灵活生成:可以根据开发人员的具体需求生成并支持调整和修改。 以“将文件流转换为File对象”这个需求为例,以下是FuncGPT(慧函数)秒级生成的代码: / 类名:FileConverter // 函数名:convertStreamToFile // 函数功能:将文件流转换为File对象 // POM依赖包:无 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileConverter { /** * 将文件流转换为File对象 * @param inputStream 文件流 * @param filePath 文件路径 * @param fileName 文件名 * @return 转换后的File对象 * @throws IOException 如果发生I/O异常 */ public static File convertStreamToFile(InputStream inputStream, String filePath, String fileName) throws IOException { File file = new File(filePath + File.separator + fileName); // 创建File对象 try (FileOutputStream outputStream = new FileOutputStream(file)) { // 创建文件输出流 byte buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 从文件流读取数据并写入文件 outputStream.write(buffer, 0, bytesRead); } } return file; // 返回转换后的File对象 } } // 函数示例 // 将文件流转换为File对象示例 // 入参:inputStream,文件流 // 入参:filePath,文件路径 // 入参:fileName,文件名 // 出参:file,转换后的File对象 // 调用示例: // InputStream inputStream = new FileInputStream("example.txt"); // String filePath = "C:\\Users\\User\\Documents"; // String fileName = "example.txt"; // File file = FileConverter.convertStreamToFile(inputStream, filePath, fileName); // System.out.println(file.getAbsolutePath); // 输出结果:例如,将文件流转换为File对象后,文件的绝对路径为:C:\Users\User\Documents\example.txt // 则输出结果为:C:\Users\User\Documents\example.txt 通过分析,不难发现以上代码:
-
Apache Spark 的基本概念和在大数据分析中的应用
-
python 数据分析在电力行业中的应用 python 电影数据分析报告
-
正负偏差变量 即 d2+、d2- 分别表示决策值中超出和未达到目标值的部分。而 di+、di- 均大于 0 刚性约束和目标约束(柔性目标约束有偏差) 在多目标规划中,>=/<= 在刚性约束中保持不变。当需要将约束条件转换为柔性约束条件时,需要将 >=/<= 更改为 =(因为已经有 d2+、d2- 用来表示正负偏差),并附加上 (+dii-di+) 注意这里是 +di、-di+!之所以是 +di,-di+,是因为需要将目标还原为最接近的原始刚性约束条件 优先级因素和权重因素 对多个目标进行优先排序和优先排序 目标规划的目标函数 是所有偏差变量的加权和。值得注意的是,这个加权和都取最小值。而 di+ 和 dii- 并不一定要出现在每个不同的需求层次中。具体分析需要具体问题具体分析 下面是一个例子: 题目中说设备 B 既要求充分利用,又要求尽可能不加班,那么列出的时间计量表达式即为:min z = P3 (d3- + d3 +) 使用 + 而不是 -d3 + 的原因是:正负偏差不可能同时存在,必须有 di+di=0 (因为判定值不可能同时大于目标值和小于目标值),而前面是 min,所以只要取 + 并让 di+ 和 dii- 都为正值即可。因此,得出以下规则: 最后,给出示例和相应的解法: 问题:某企业生产 A 和 B 两种产品,需要使用 A、B、C 三种设备。下表显示了与工时和设备使用限制有关的产品利润率。问该企业应如何组织生产以实现下列目标? (1) 力争利润目标不低于 1 500 美元; (2) 考虑到市场需求,A、B 两种产品的生产比例应尽量保持在 1:2; (3)设备 A 是贵重设备,严禁超时使用; (4)设备 C 可以适当加班,但要控制;设备 B 要求充分利用,但尽量不加班。 从重要性来看,设备 B 的重要性是设备 C 的三倍。 建立相应的目标规划模型并求解。 解:设企业生产 A、B 两种产品的件数分别为 x1、x2,并建立相应的目标计划模型: 以下为顺序求解法,利用 LINGO 求解: 1 级目标: 模型。 设置。 variable/1..2/:x;! s_con_num/1...4/:g,dplus,dminus;!所需软约束数量(g=dplus=dminus 数量)及相关参数; s_con(s_con_num);! s_con(s_con_num,variable):c;!软约束系数; 结束集 数据。 g=1500 0 16 15. c=200 300 2 -1 4 0 0 5; 结束数据 min=dminus(1);!第一个目标函数;!对应于 min=z 的第一小部分;! 2*x(1)+2*x(2)<12;!硬约束 @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); !使用设置完成的数据构建软约束表达式; ! !软约束表达式 @for(variable:@gin(x)); !将变量约束为整数; ! 结束 此时,第一级目标的最优值为 0,第一级偏差为 0: 第二级目标: !求 dminus(1)=0,然后求解第二级目标。 模型。 设置。 变量/1..2/:x;!设置:变量/1..2/:x; ! s_con_num/1...4/:g,dplus,dminus;!软约束数量及相关参数; s_con(s_con_num(s_con_num));! s_con(s_con_num,variable):c;! 软约束系数; s_con(s_con_num,variable):c;! 结束集 数据。 g=1500 0 16 15; c=200 300 2 -1 4 0 0 5; 结束数据 min=dminus(2)+dplus(2);!第二个目标函数 2*x(1)+2*x(2)<12;!硬约束 @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); ! 软约束表达式;! dminus(1)=0; !第一个目标结果 @for(variable:@gin(x)); ! 结束 此时,第二个目标的最优值为 0,偏差为 0: 第三目标 !求 dminus(2)=0,然后求解第三个目标。 模型。 设置。 变量/1..2/:x;!设置:变量/1..2/:x; ! s_con_num/1...4/:g,dplus,dminus;!软约束数量及相关参数; s_con(s_con_num(s_con_num));! s_con(s_con_num,variable):c;! 软约束系数; s_con(s_con_num,variable):c;! 结束集 数据。 g=1500 0 16 15; c=200 300 2 -1 4 0 0 5; 结束数据 min=3*dminus(3)+3*dplus(3)+dminus(4);!第三个目标函数。 2*x(1)+2*x(2)<12;!硬约束 @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); ! 软约束表达式;! dminus(1)=0; !第一个目标约束条件; ! dminus(2)+dplus(2)=0; !第二个目标约束条件 @for(variable:@gin(x));! 结束 最终结果为 x1=2,x2=4,dplus(1)=100,最优利润为
-
人工智能技术在摄影设备中的应用及分析实例
-
Apache Spark 的基本概念和在大数据分析中的应用
-
网络在单细胞转录组数据分析中的应用
-
[机器学习] 贝叶斯算法在机器学习中的应用及实例分析