【生物信息学】单细胞RNA测序数据分析:计算亲和力矩阵(基于距离、皮尔逊相关系数)及绘制热图(Heatmap)

文章目录

  • 一、实验介绍
  • 二、实验环境
    • 1. 配置虚拟环境
    • 2. 库版本介绍
  • 三、实验内容
    • 0. 导入必要的库
    • 1. 读取数据集
    • 2. 质量控制(可选)
    • 3. 基于距离的亲和力矩阵
    • 4. 绘制基因表达的Heatmap
    • 5. 基于皮尔逊相关系数的亲和力矩阵
    • 6. 代码整合

一、实验介绍

  计算亲和力矩阵,一般按照以下步骤进行:

  • 导入数据:加载单细胞RNA测序数据集。
  • 数据预处理:根据需要对数据进行预处理,例如基因过滤归一化等。
  • 计算亲和力:使用合适的算法(例如,欧几里德距离Pearson相关系数或其他距离/相似度度量)计算样本之间的亲和力(可以使用现有的生物信息学工具包(如Scanpy)来执行此计算。
  • 构建亲和力矩阵:将计算得到的亲和力值组织成一个亲和力矩阵,其中每个元素表示两个样本之间的亲和力

二、实验环境

1. 配置虚拟环境

  可使用如下指令:

conda create -n bio python=3.8
conda activate bio
pip install -r requirements.txt

  其中,requirements.txt:

numpy==1.18.1
matplotlib==3.1.2
seaborn==0.9.0

2. 库版本介绍

软件包本实验版本目前最新版
matplotlib3.1.23.8.0
numpy1.81.11.26.0
python3.8.16
scipy1.10.11.11.3
seaborn0.12.20.13.0

三、实验内容

0. 导入必要的库

import scanpy as sc
import numpy as np
from scipy.spatial import distance_matrix
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
  • Scanpy是一个用于单细胞RNA测序数据分析的Python库,提供了许多功能和工具来处理和分析单细胞数据

1. 读取数据集

adata = sc.read_h5ad('./pbmc3k.h5ad')

  在生物信息学中,PBMC3K.h5ad是一种常用的单细胞RNA测序数据集,用于研究人类外周血单个核细胞(PBMC)的基因表达。

2. 质量控制(可选)

# 质控
# 过滤掉低质量的细胞和基因
sc.pp.filter_cells(adata, min_genes=200)  # 过滤掉表达基因数目小于200的细胞
sc.pp.filter_genes(adata, min_cells=30)  # 过滤掉被少于3个细胞表达的基因

3. 基于距离的亲和力矩阵

import scanpy as sc
import numpy as np
from scipy.spatial import distance_matrix

# 计算亲和力矩阵
adata = sc.read_h5ad('./pbmc3k.h5ad')
dis_matrix = distance_matrix(adata.X, adata.X) # calculate distance matrix
num_cell = dis_matrix.shape[0]
sig = np.var(dis_matrix) # sigma
affinity_matrix = np.zeros((num_cell, num_cell))
for i in range(num_cell):
    for j in range(num_cell):
        affinity_matrix[i,j] = np.exp(-dis_matrix[i,j] /(2 * sig))

在这里插入图片描述

4. 绘制基因表达的Heatmap

sns.heatmap(affinity_matrix, cmap='viridis')
plt.title('Affinity Matrix')
plt.xlabel('Cells')
plt.ylabel('Cells')
plt.show()

ChatGPT:

  热图(Heatmap)是一种数据可视化技术,用于显示数据中的密度和模式。它通过将数据点映射到颜色编码的图像上来展示数据的分布情况。热图通常用于显示二维数据,其中每个数据点的位置对应于平面上的坐标,并使用颜色来表示数据点的密度或值。
  在一个热图中,颜色编码表示了数据点的频率或强度。通常,较高的频率或强度用较亮或较暖的颜色(如红色)表示,而较低的频率或强度用较暗或较冷的颜色(如蓝色)表示。这种颜色映射使得我们能够直观地观察和分析数据的分布特征,从而揭示出数据集中的模式、热点和趋势。
  热图在多个领域和应用中都得到了广泛使用。在数据分析和可视化中,热图常用于显示热点地区、人口密度、温度分布、点击热度、基因表达模式等。在商业领域,热图可以帮助用户更好地理解和解释数据,从而支持决策制定和问题解决。此外,热图还在医学、生物学、交通规划、市场营销等领域中发挥着重要作用。

在这里插入图片描述

5. 基于皮尔逊相关系数的亲和力矩阵

  【生物信息学】使用皮尔逊相关系数进行相关性分析

from scipy.stats import pearsonr
# 计算每对细胞之间的皮尔逊相关系数

pearson_matrix = np.zeros((num_cell, num_cell))
for i in range(num_cell):
    for j in range(num_cell):
        pearson_matrix[i, j] = pearsonr(adata.X[i], adata.X[j])[0]
        
# 将合并的亲和力矩阵保存
adata.obsp['distances'] = combined_affinity

sns.heatmap(combined_affinity, cmap='viridis')
plt.title('Combined Matrix')
plt.xlabel('Cells')
plt.ylabel('Cells')
plt.show()

6. 代码整合

import scanpy as sc
import numpy as np
from scipy.spatial import distance_matrix

import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import pearsonr


# 计算亲和力矩阵
adata = sc.read_h5ad('./pbmc3k.h5ad')
dis_matrix = distance_matrix(adata.X, adata.X) # calculate distance matrix
num_cell = dis_matrix.shape[0]
sig = np.var(dis_matrix) # sigma
affinity_matrix = np.zeros((num_cell, num_cell))
for i in range(num_cell):
    for j in range(num_cell):
        affinity_matrix[i,j] = np.exp(-dis_matrix[i,j] /(2 * sig))

# %%

# 创建热图
sns.heatmap(affinity_matrix, cmap='viridis')
plt.title('Affinity Matrix')
plt.xlabel('Cells')
plt.ylabel('Cells')
plt.show()


# %%
from scipy.stats import pearsonr
# 计算每对细胞之间的皮尔逊相关系数

pearson_matrix = np.zeros((num_cell, num_cell))
for i in range(num_cell):
    for j in range(num_cell):
        pearson_matrix[i, j] = pearsonr(adata.X[i], adata.X[j])[0]

# 将基于距离的亲和力矩阵和皮尔逊相关系数亲和力矩阵相加
combined_affinity = affinity_matrix + pearson_matrix

# 将合并的亲和力矩阵保存
adata.obsp['distances'] = combined_affinity

sns.heatmap(combined_affinity, cmap='viridis')
plt.title('Affinity Matrix')
plt.xlabel('Cells')
plt.ylabel('Cells')
plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云服务器 centos 部署 code-server 并配置 c/c++ 环境

将你的云服务器改为 centos 8 为什么要将云服务器的操作系统改成 centos 8 呢?原因就是 centos 7 里面的配置满足不了 code-server 的需求。如果你使用的是 centos 7 那么就需要你升级一些东西,这个过程比较麻烦。我在 centos 7 上面运行 code-server 的…

[学习笔记]python绘制图中图(绘制站点分布图)

背景 在绘制站点分布图时,有时需要采用图中图的方式,以便于在一张图中尽可能多的表达信息。此处记录一下利用python matplotlib绘制图中图的脚本,方便然后查询。 包含数据 该绘图脚本中包含以下数据: CMONOC站点分布&#xff…

CCF_A 计算机视觉顶会CVPR2024投稿指南以及论文模板

目录 CVPR2024官网: CVPR2024投稿链接: CVPR2024 重要时间节点: CVPR2024投稿模板: WORD: LATEX : CVPR2024_AuthorGuidelines CVPR2024投稿Topics: CVPR2024官网: https://cvpr.thecvf.com/Conferences/2024CV…

pytorch复现4_Resnet

ResNet在《Deep Residual Learning for Image Recognition》论文中提出,是在CVPR 2016发表的一种影响深远的网络模型,由何凯明大神团队提出来,在ImageNet的分类比赛上将网络深度直接提高到了152层,前一年夺冠的VGG只有19层。Image…

正点原子嵌入式linux驱动开发——Linux USB驱动

USB是很常用的接口,目前大多数的设备都是USB接口的,比如鼠标、键盘、USB摄像 头等,在实际开发中也常常遇到USB接口的设备,本章就来学习一下如何使能Linux内核自带的USB驱动。这里不会具体学习USB的驱动开发。 USB接口简介 什么是…

常用sql语句

/*表操作*/ drop table order; create table products( product_no integer primary key default 1, name text, price numeric default 9.99 ); create table orders ( order_id integer primary key default 1, product_no int, quantity integer ); create table order_…

目标检测:Proposal-Contrastive Pretraining for Object Detection from Fewer Data

论文作者:Quentin Bouniot,Romaric Audigier,Anglique Loesch,Amaury Habrard 作者单位:Universit Paris-Saclay; Universit Jean Monnet Saint-Etienne; Universitaire de France (IUF) 论文链接:http://arxiv.org/abs/2310.16835v1 内容…

ztree调整节点间距及一般使用

1.基本介绍 树形结构菜单的功能属于非常常见的一种菜单交互,本人先后也使用过多种树形结构的插件,有 ztree、xloadtree、treeview、datagrid-tree 等等等等。近期有个功能恰好又要使用tree菜单了,由于可自行选择使用的组件,所以略…

微信小程序 人工智能志愿者服务活动报名系统uniAPP+vue

基于java语言设计并实现了人工智能志愿者服务APP。该APP基于B/S即所谓浏览器/服务器模式,应用SpringBoot框架与HBuilder X技术,选择MySQL作为后台数据库。系统主要包括用户、志愿活动、活动报名、活动签到、服务职责、服务排行等功能模块。 本文首先介绍…

【2021集创赛】Risc-v杯一等奖:自适应噪声环境的超低功耗语音关键词识别系统

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位:东南大学 队伍名称:Hey Siri 指导老师:刘波 参赛队员:钱俊逸、张人元、王梓羽 总决赛奖项:全国一等奖 摘要…

数字孪生技术:金融业合规与自动化的未来

在当今数字化时代,金融行业正积极探索数字孪生技术,以实现更高效的运营和更好的客户体验。数字孪生是一种将实体世界的对象、过程和系统数字化为虚拟模型的技术,金融机构正在充分利用它带来的众多优势。 1. 风险管理与模拟 数字孪生模型可用…

docker部署minio并使用springboot连接

需求:工作中,在微信小程序播放时,返回文件流并不能有效的使用,前端需要一个可以访问的地址,springboot默认是有资源拦截器的,但是不适合生产环境的使用 可以提供使用的有例如fastdfs或者minio,这…

Flutter 05 组件状态、生命周期、数据传递(共享)、Key

一、Android界面渲染流程UI树与FlutterUI树的设计思路对比 二、Widget组件生命周期详解 1、Widget组件生命周期 和其他的视图框架比如android的Activity一样,flutter中的视图Widget也存在生命周期,生命周期的回调函数体现在了State上面。组件State的生命…

QT实现在线流媒体播放平台

文章目录 QT实现在线流媒体播放平台简介开发视频ffmpeg下载SimpleVideoPlayer.hSimpleVideoPlayer.cpp 开发音频添加功能打开文件夹播放暂停播放上下一首选择倍速 效果展示项目下载 QT实现在线流媒体播放平台 简介 Qt是一种流行的C开发框架,它提供了用于构建图形用…

FPGA_Signal TapII 逻辑分析仪 在线信号波形抓取

FPGA_Signal TapII 逻辑分析仪 在线信号波形抓取 由于一些工程的仿真文件不易产生,所以我们可以利用 quartus 软件自带的 SignalTap 工具对波形进行抓取 对各个信号进行分析处理,让电子器件与FPGA进行正常通讯工作,也验证所绘制的波形图是否一…

Scala库用HTTP爬虫IP代码示例

根据提供的引用内容,sttp.client3和sttp.model库是用于HTTP请求和响应处理的Scala库,可以与各种Scala堆栈集成,提供同步和异步,过程和功能接口。这些库可以用于爬虫程序中,用于发送HTTP请求和处理响应。需要注意的是&a…

JavaScript从入门到精通系列第二十七篇:详解JavaScript中的包装类

大神引荐:作者有幸结识技术大神孙哥为好友获益匪浅,现在把孙哥视频分享给大家 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JavaS…

vue自定义组件:中线分割拖动盘

在GitHub上可以找到类似的组件,比如4年前发布的vue2版本的 Vue Split Pane, 但是我还是自己写了一个类似的: 组件效果: 特点: 不是照抄别人的。同时支持vue2、vue3(组件内部使用选项式API风格&#xff09…

不一样的网络协议-------KCP协议

1、kcp 的协议特点 1.1、RTO 不翻倍 RTO(Retransmission TimeOut),重传超时时间。tcp x 2,kcp x 1.5,提高传输速度 1.2、选择重传 TCP丢包时会全部重传从该包开始以后的数据,而KCP选择性重传,只重传真正丢失的数据包…

同为科技(TOWE)自动断电倒计时定时桌面PDU插排

在每个家庭中,插排插座都是必不可少的电源设备。随着各种电器的普及应用和生活节奏的加快,人们对插排也有着多样化的需求,比如在插排中加入定时开关、自动断电、断电记忆、倒计时等等功能,让原本不支持智能家居的用电器秒变智能。…