科研绘图(四)火山图
火山图是生物信息学中常用的一种图表,用来显示基因表达数据的变化。它通常将每个点表示为一个基因,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中插入签名,可插入背景透明的签字图 素材库-保存签名 将写好的签字图复制粘贴到素材库中,以便永久使用ÿ…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
