科研绘图(四)火山图
火山图是生物信息学中常用的一种图表,用来显示基因表达数据的变化。它通常将每个点表示为一个基因,x轴显示对数比率(log ratio),表示基因表达的变化大小;y轴显示-log10(p-value),表示变化的统计显著性。在火山图中,通常会看到分布在两侧的点表示表达上升或下降的基因,而分布在中间的点表示没有显著变化的基因。这种图表有助于快速识别在特定条件下显著上调或下调的基因。

import matplotlib.pyplot as plt
import numpy as np# 生成示例数据
np.random.seed(0)
x = np.random.normal(size=1000)
y = -np.log10(np.random.uniform(low=0.001, high=1.0, size=1000))# 分类条件,随机分配,仅用于示例
conditions = np.random.choice(['up', 'down', 'nodiff'], size=1000, p=[0.1, 0.1, 0.8])# 创建火山图
plt.figure(figsize=(8, 6))
plt.scatter(x[conditions == 'up'], y[conditions == 'up'], color='r', label='up')
plt.scatter(x[conditions == 'down'], y[conditions == 'down'], color='b', label='down')
plt.scatter(x[conditions == 'nodiff'], y[conditions == 'nodiff'], color='grey', alpha=0.5, label='nodiff')# 添加必要的标签和标题
plt.title('Volcano Plot')
plt.xlabel('Log2 Fold Change')
plt.ylabel('-Log10 p-value')# 添加图例
plt.legend()# 显示图表
plt.show()
下面是matlab的代码
% 假设数据
logFoldChange = randn(1000,1); % 随机生成对数变化倍数
pValues = rand(1000,1); % 随机生成p值% 设置阈值
pValueThreshold = 0.05; % p值显著性阈值
logFoldChangeThreshold = 1; % 对数变化倍数阈值% 计算统计显著性
negLogPValues = -log10(pValues); % 计算负对数p值% 分类基因表达变化
upRegulated = logFoldChange > logFoldChangeThreshold & pValues < pValueThreshold;
downRegulated = logFoldChange < -logFoldChangeThreshold & pValues < pValueThreshold;
notRegulated = ~upRegulated & ~downRegulated;% 绘制火山图
figure;
hold on;
scatter(logFoldChange(upRegulated), negLogPValues(upRegulated), 40,'blue', 'filled');
scatter(logFoldChange(downRegulated), negLogPValues(downRegulated), 40, 'red', 'filled');
scatter(logFoldChange(notRegulated), negLogPValues(notRegulated), 10, 'black');% 标注显著的点
significantPoints = find(pValues < pValueThreshold);
for i = 1:length(significantPoints)
text(logFoldChange(significantPoints(i)), negLogPValues(significantPoints(i)), ...
num2str(significantPoints(i)), 'FontSize', 8);
end% 增加参考线
line(xlim(), [-log10(pValueThreshold) -log10(pValueThreshold)], 'Color', 'green', 'LineStyle', '--');
line([-logFoldChangeThreshold -logFoldChangeThreshold], ylim(), 'Color', 'green', 'LineStyle', '--');
line([logFoldChangeThreshold logFoldChangeThreshold], ylim(), 'Color', 'green', 'LineStyle', '--');% 添加轴标签和标题
xlabel('Log2 Fold Change');
ylabel('-Log10 p-Value');
title('Volcano Plot');% 添加图例
legend({'Up-regulated', 'Down-regulated', 'Not significant'}, 'Location', 'northeastoutside');% 格式化图像
set(gca, 'FontSize', 12);
grid on;
hold off;
为了进一步美化,我们可以添加一些额外的格式设置,例如自定义颜色,透明度,以及改进的标注。如下所示,
火山图的用处
1. 差异表达基因的可视化:火山图是用来直观显示成千上万个基因或蛋白质之间表达水平差异显著性的工具。每个点代表一个基因或蛋白质,它的位置基于表达变化的大小(通常是对数变化率)和这种变化的统计显著性。
2. 筛选重要目标:火山图可以用来快速识别和筛选出那些表达变化最大且统计显著的基因或蛋白质。这些通常是研究中的关键分子,可能是疾病标记物或药物靶标。
3. 趋势观察:通过观察点的分布,研究人员可以了解基因表达变化的总体趋势,例如是否有很多基因表达上升或下降,以及变化是否集中在某个特定区域。
4. 数据质量评估:火山图也可以帮助研究人员评估实验数据的质量。理想情况下,大多数基因应该集中在图的中部,表示没有显著差异,而显著差异的基因应该均匀地分布在左右两侧。
5. 交互式探索:现代生物信息学软件提供的火山图通常是交互式的,允许用户点击特定的点来获取更多关于该基因或蛋白质的信息,如名称、功能以及与其他分子的关联。
6. 组合其他分析:火山图常与其他生物信息学工具和分析结合使用,比如富集分析、网络分析等,来进一步探索和解释数据中的生物学现象。
7. 通信工具:作为一种强有力的视觉工具,火山图可以在学术出版物、研究报告和演示中,帮助解释复杂的统计数据,并传达研究的关键发现。
火山图是一种功能强大的数据展示方法,它不仅能够显示单个基因或蛋白质的变化,还能在生物学上下文中提供这些变化的全局视图。通过这种方式,火山图帮助研究人员理解实验条件下生物学系统的整体响应。
相关文章:
科研绘图(四)火山图
火山图是生物信息学中常用的一种图表,用来显示基因表达数据的变化。它通常将每个点表示为一个基因,x轴显示对数比率(log ratio),表示基因表达的变化大小;y轴显示-log10(p-value),表示变化的统计…...
超强站群系统v9.0:最新蜘蛛池优化技术,一键安装,内容无缓存刷新,高效安全
安全、高效,化的优化利用php性能,使得运行流畅稳定 独创内容无缓存刷新不变,节省硬盘。防止搜索引擎识别蜘蛛池 蜘蛛池算法,轻松构建站点(电影、资讯、图片、论坛等等) 可以个性化每个网站的风格、内容、…...
torch.fx的极简通用量化教程模板
现在比较流行的方式,是使用 torch.fx来做量化,比如地平线J3/J5的oe开发包中内嵌的ptq/qat量化方式,就是基于torch.fix进行开发的。本文将使用100行代码教你入门比较标准的量化步骤。,这些问题需要解答。本文100行代码,麻雀虽小五脏俱全,包括怎么用,用在哪里,哪里不能用…...
rpc的正确打开方式|读懂Go原生net/rpc包
前言 大家好,这里是白泽,之前最近在阅读字节跳动开源RPC框架Kitex的源码,分析了如何借助命令行,由一个IDL文件,生成client和server的脚手架代码,也分析了Kitex的日志组件klog。当然Kitex还有许多其他组件&…...
【信号与系统】【北京航空航天大学】实验二、连续时间系统的时域分析【MATLAB】
一、实验目的 1、掌握连续时间信号的卷积运算以及其对应的 MATLAB 实现方法; 2、掌握连续系统的冲激响应、阶跃响应 以及其对应的 MATLAB 实现方法; 3、掌握利用 MATLAB 求 LTI (Linear Time-Invariant, 线性时不变)系统响应的方…...
【Linux 内核源码分析笔记】系统调用
在Linux内核中,系统调用是用户空间程序与内核之间的接口,它允许用户空间程序请求内核执行特权操作或访问受保护的内核资源。系统调用提供了一种安全可控的方式,使用户程序能够利用内核功能而不直接访问底层硬件。 系统调用: 通过…...
mysql清空并重置自动递增初始值
需求:当上新项目时,测试环境数据库导出来的表id字段一般都有很大的初始递增值了,需要重置一下 先上代码: -- 查看当前自动递增值 SHOW CREATE TABLE table_name; -- 重建自动递增索引(可选) ALTER TABLE t…...
计算机算法之二分算法
文章目录 前言核心问题遍历查找思路遍历查找代码实现遍历查找缺点二分查找思路二分查找代码实现二分查找优点二分查找的变种问题一解题思路代码实现问题二解题思路代码实现 前言 大家好,我是醉墨居士,今天聊一下计算机中的经典算法 - 二分算法 核心问题…...
获取当前设备的IP
背景: 在本地使用自带webUI的项目时,需要制定webUI的访问地址。 一般本地访问使用:127.0.0.1,配置为可以从其他设备访问时,需要指定当前设备的IP,或者指定为0.0.0.0。 例如:使用locust的时候&a…...
koa2文件的上传下载功能
const Router require(“koa-router”); const upload new Router(); const bodyParser require(“koa-bodyparser”); const multer require("koa/multer"); const path require(“path”); const article require("…/utils/sql"); const { getCur…...
test-02-test case generate 测试用例生成 EvoSuite 介绍
拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) 拓展阅读 自动生成测试用例 什么…...
1.单表查询
作业要求 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varc…...
FFmpeg 的使用与Docker安装流媒体服务器
本文阐述的均为命令行的使用方式,并不牵扯FFmpeg 的 C音视频开发内容,补充一句,C的资料真的少,能把C学好的人,我真的是觉得巨佬。 我主要是使用FFmpeg 推流方面的知识,案例大都是靠近这方面。 一、FFmpeg…...
Qt QListWidget列表框控件
文章目录 1 属性和方法1.1 外观1.2 添加条目1.3 删除条目1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的列表框控件,对应的类是QListWidget 它用于显示多个列表项,列表项对应的类是QListWidgetitem 1 属性和方法 QListWidget有很多属性和方法…...
小知识分享2
文章目录 1.TCP/IP协议2.四次挥手断开连接3.TCP的三次握手和四次挥手4.在什么情况下需要设置WINS Proxy?5.用户与用户账户有什么不同?为什么需要使用用户账户? 1.TCP/IP协议 1、TCP/IP、Transmission Control Protocol/internet Protocol,传…...
【Golang开源项目】Golang高性能内存缓存库BigCache设计与分析
项目地址 BigCache 是一个快速,支持并发访问,自淘汰的内存型缓存,可以在存储大量元素时依然保持高性能。BigCache将元素保存在堆上却避免了GC的开销。 背景介绍 BigCache的作者在项目里遇到了如下的需求: 支持http协议支持 10…...
Elasticsearch 7.8.0从入门到精通
安装Elasticsearch 7.8.0 官网:Elasticsearch 7.8.0 | Elastic 大家下载所需要的安装包即可。然后解压缩: Elasticsearch是通过java编写的,所以自带jdk。多好,下载Elasticsearch赠送jdk 0.0,不过一般我们用自己的jdk…...
寻找最富裕的小家庭 - 华为OD统一考试
OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 在一棵树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭现给你一棵树,请计算出最富裕的小家庭的财富和。 输入描述 第一行为一个数N,…...
ssm基于Java的药店药品信息管理系统的设计与实现论文
摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,药品信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…...
Word插件-大珩助手-手写电子签名
手写签名 支持鼠标写,支持触摸屏写,点击画笔按钮切换橡皮擦,支持清空画板重写,点击在word中插入签名,可插入背景透明的签字图 素材库-保存签名 将写好的签字图复制粘贴到素材库中,以便永久使用ÿ…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
