【生物信息学】单细胞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_affinitysns.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_matriximport 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_affinitysns.heatmap(combined_affinity, cmap='viridis')
plt.title('Affinity Matrix')
plt.xlabel('Cells')
plt.ylabel('Cells')
plt.show()

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

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

相关文章

一键全自动剪辑,喝杯咖啡的时间,几百个视频就剪好了,效率大大提高,可以让我有更多的时间去研究剪辑的思路

一键全自动剪辑:提升效率,释放创造力 在当今的快节奏数字时代,视频剪辑已经成为各行各业不可或缺的一部分。从社交媒体到电子商务,从教育到娱乐,视频剪辑的应用越来越广泛。然而,剪辑工作往往需要大量的时…

【Mybatis源码】注册器 - TypeAliasRegistry

Mybatis中使用TypeAliasRegistry注册器用于管理类型与别名,Mybatis中许多功能的实现都需要从TypeAliasRegistry注册器中找到别名对应的类型,本篇我们介绍一下TypeAliasRegistry注册器的原理与使用 一、构造方法 TypeAliasRegistry注册器类提供了一个无参数的构造方法用于创…

【自然语言处理】【长文本处理】RMT:能处理长度超过一百万token的Transformer

相关博客 【自然语言处理】【长文本处理】RMT:能处理长度超过一百万token的Transformer 【自然语言处理】【大模型】MPT模型结构源码解析(单机版) 【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版) 【自然语言处理】【大模型】BLOOM模型结构源码解析(…

【STL】:list用法详解

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关list的使用,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构…

教您如何去除照片上的水印!

许多网友都在寻找方法去除照片上的水印,水印通常用于保护版权或标识来源,但有时候我们可能需要使用带有水印的照片,却又不希望水印影响观感,今天我将向大家介绍两种有效的方法,帮助解决“如何去除照片上的水印”这一难…

metaRTC集成flutter ui demo编译指南

概要 Flutter是由Google开发的开源UI工具包,用于构建跨平台应用程序,支持linux/windows/mac/android/ios等操作系统。 metaRTC新增flutter demo,支持linux/windows/mac/android/ios操作系统,此demo在ubuntu桌面环境下测试成功。…

【嵌入式项目应用】__UART自定义通信协议代码实现方法

目录 前言 一、什么是通信协议 二、简单通信协议的问题 三、通信协议的常见内容 1. 帧头 2. 设备地址/类型 3. 命令/指令 4. 命令类型/功能码 5. 数据长度 6. 数据 7.帧尾 8.校验码 四、通信协议代码实现 1. 消息数据发送 a. 通过串口直接发送每一个字节 b. 通过…

图像处理:图片二值化学习,以及代码中如何实现

目录 1、了解下图片二值化的含义 2、进行图像二值化处理的方法 3、如何选择合适的阈值进行二值化 4、实现图片二值化(代码) (1)是使用C和OpenCV库实现: (2)纯C代码实现,不要借…

<windows>win11输入法无法设置UI,变为了win10样子,解决方法

1 问题 升级win11版本后,输入法可能会变为旧版,如下图。如何恢复WIN11新版样子? 2 解决 点击开始–>设置–>搜索”语言“–>选择中文简体右侧语言选项。 下拉到最后选择微软拼音右侧三点,选择键盘选项–>选择常规…

Unity从入门到主程学习路线(内含学习资料)干货超全

写在最前 很多小伙伴想进阶Unity主程,进阶Unity架构师,不知道要学哪些知识,今天给大家分享一下比较完整的知识体系,Unity学习路线,介绍一些有干货的博主与教程,给大家做参考。 不管你是已经工作了,还是正…

Ubuntu:使用apache2部署Vue开发的网站

作者:CSDN @ _乐多_ 本文记录了Vue项目打包到部署到ubuntu系统的全部步骤。 文章目录 一、代码打包二、安装 Apache2三、开启/关闭apache23.1 开启3.2 关闭四、部署Vue应用到Apache24.1 首次部署4.2 更新部署五、全部操作截图一、代码打包 首先,确保您已经在本地开发环境中…

【C语言初阶】之函数

【C语言初阶】之函数 1. 函数是什么2. C语言中的函数2.1 库函数2.2.1 利用文档学习库函数 2.2 自定义函数 3. 函数参数3.1 实际参数(实参)3.2 形式参数(形参) 4. 函数调用4.1 传值调用4.2 传址调用4.3 练习 5. 函数的嵌套调用和链式访问5.1 嵌套调用5.2 链式访问 6. 函数的声明…

微服务架构之路1,服务如何拆分?使用微服务的注意事项?

目录 一、前言二、单体服务的弊端三、微服务化四、服务如何拆分?五、使用微服务的注意事项1、服务如何定义2、服务如何发布和订阅3、服务如何监控4、服务如何治理5、故障如何定位 大家好,我是哪吒。 一、前言 微服务已经是Java开发的必备技能&#xff…

Python画图之动态爱心

Python画出动态爱心(有趣小游戏) 一、效果图二、Python代码 一、效果图 二、Python代码 import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGHT 480 # 画布的高 CANVAS_CENTER_X CANV…

线段树 区间赋值 + 区间加减 + 求区间最值

线段树好题:P1253 扶苏的问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 区间赋值 区间加减 求区间最大。 对于区间赋值和区间加减来说,需要两个懒标记,一个表示赋值cover,一个表示加减add。 区间赋值的优先级大于区间加…

【论文阅读】Towards Globally Optimal Normal Orientations for Large Point Clouds

文章目录 声明相关文章核心思想归纳主要贡献点主要流程核心公式机器翻译声明 本帖更新中如有问题,望批评指正!如果有人觉得帖子质量差,希望在评论中给出建议,谢谢!相关文章 这里列出一些相关的文章,方便对比其原理 Parallel Globally Consistent Normal Orientation of …

大麦协议开发

1. 用户抢购请求处理: - 后端实现:在后端,您可以创建一个用于处理用户抢购请求的接口。当用户发起抢购请求时,后端会根据一定的算法和逻辑来处理请求。例如,可以使用分布式锁来保证只有一个用户能够成功抢购。示例后端…

02.Oracle的启动过程

Oracle的启动过程 一、Oracle数据库的四种状态二、Oracle的启动过程 一、Oracle数据库的四种状态 Oracle数据库有四种状态:SHUTDOWN、NOMOUNT、MOUNT、OPEN. 1.SHUTDOWN状态 数据库没有启动 2.NOMOUNT状态 启动了instance(数据库实例)启动…

VS2017制作安装包如何将整个文件夹添加进依赖项中

找到安装项目右键view-文件系统 找到Application Folder 右键Add-Folder 如Python38 选中创建的 Python38 在右侧的空白处粘贴要复制的文件即可。文件多,等待时间较长

玩转硬件之Micro:bit的玩法(三)——计步器

随着技术的发展,现在智能手机和智能手表已经走进千家万户,所以大家对于计步器可能不陌生,计步器是一种用于计算行走步数的装置。它通常是一个小型电子设备,可以佩戴在身体上,如腕带、腰带或口袋中。计步器通过感应人体…