1.基于python的单细胞数据预处理-归一化

目录

  • 归一化的引入
  • 移位对数
  • 皮尔森近似残差
  • 两个归一化方法的总结

参考:
[1] https://github.com/Starlitnightly/single_cell_tutorial
[2] https://github.com/theislab/single-cell-best-practices

归一化的引入

在质量控制中,已经从数据集删除了低质量细胞。然而由于测序技术的限制,我们在样本中获得RNA时,经过分子捕获,逆转录和测序,这些步骤会影响同一种细胞的细胞间测序深度的变异性,因此,数据中的细胞间差异包含了这部分误差,等价于counts矩阵包含了变化很大的方差项。

归一化旨在通过将UMI counts的方差缩放到指定范围,以调整原始矩阵的UMI counts。目前有两种归一化方法:

  • 移位对数:在大部分数据中表现良好,有利于稳定方差,进而利于降维和差异基因识别;
  • 皮尔森残差的近似解析:保留生物学差异,有利于鉴定稀有细胞类型。

首先,我们加载数据:

import omicverse as ov
import scanpy as sc
import matplotlib.pyplot as pltov.utils.ov_plot_set()adata = sc.read("./data/s4d8_quality_control.h5ad")
print(adata)

然后,可视化total_counts,这是描述一个细胞中发现的分子数量(UMI),通常也可以被认为是这个细胞的文库大小:

import seaborn as sns
plt.figure(figsize=(8, 6))
p1 = sns.histplot(adata.obs["total_counts"], bins=100, kde=False)
plt.show()

fig1
这可视化了原始计数UMI的分布,可以用于和之后归一化的分布对比。

移位对数

这里介绍基于delta方法的移位对数,delta方法应用 f ( Y ) f(Y) f(Y),使得原始计数 Y Y Y中的差异被缩小: f ( y ) = l o g ( y s + y 0 ) f(y)=log(\frac{y}{s}+y_{0}) f(y)=log(sy+y0)其中, s s s是缩放因子, y 0 y_{0} y0是伪计数。每个细胞都有对应的缩放因子,细胞 c c c的缩放因子记为: s c = ∑ g y g c L s_{c}=\frac{\sum_{g}y_{gc}}{L} sc=Lgygc其中, g g g代表不同的基因, L L L代表基因的计数总和。

使用移位对数归一化:

scales_counts = sc.pp.normalize_total(adata, target_sum=None, inplace=False)
print(scales_counts)
# log1p transform
adata.layers["log1p_norm"] = sc.pp.log1p(scales_counts["X"], copy=True)

可视化对比归一化前后:

fig, axes = plt.subplots(1, 2, figsize=(8, 4))
p1 = sns.histplot(adata.obs["total_counts"], bins=100, kde=False, ax=axes[0])
axes[0].set_title("Total counts")
p2 = sns.histplot(adata.layers["log1p_norm"].sum(1), bins=100, kde=False, ax=axes[1])
axes[1].set_title("Shifted logarithm")
plt.savefig("./result/2-3.png")

fig2

我们发现UMI的最大值在1000左右,经过移位对数化后,UMI的分布近似正态分布。

皮尔森近似残差

scRNA-seq包含生物异质性和批次效应,移位对数更倾向于消除批次差距,皮尔森近似残差可以保留移位对数去除的信息。实验中发现,皮尔森近似残差计算非常慢。对于14814×20171的adata,移位对数花费5秒,皮尔森近似残差花费3分33秒。

归一化与可视化为:

from scipy.sparse import csr_matrix
analytic_pearson = sc.experimental.pp.normalize_pearson_residuals(adata, inplace=False)
adata.layers["analytic_pearson_residuals"] = csr_matrix(analytic_pearson["X"])fig, axes = plt.subplots(1, 2, figsize=(8, 4))
p1 = sns.histplot(adata.obs["total_counts"], bins=100, kde=False, ax=axes[0])
axes[0].set_title("Total counts")
p2 = sns.histplot(adata.layers["analytic_pearson_residuals"].sum(1), bins=100, kde=False, ax=axes[1])
axes[1].set_title("Analytic Pearson residuals")
plt.savefig("./result/2-4.png")

注意,如果我们设置inplace=True时,我们归一化的计数矩阵会取代原anndata文件中的计数矩阵,即更改adata.X的内容。

fig3
相比移位对数,皮尔森近似残差归一化后的数据分布与原始数据更相似,所以保留了更多信息。

两个归一化方法的总结

移位对数和皮尔逊近似残差是两种用于归一化数据的方法,它们各自具有不同的特点:

  1. 移位对数(Log-transformation)

    • 特点:将原始数据的计数值进行对数转换,通常是加上一个小的常数(如1),以避免计数值为零时出现无穷大的情况。
    • 优点:可以有效地减小数据的偏斜,使其更符合正态分布假设。对于计数数据,对数转换也可以减小计数之间的差异,有助于更好地展现数据的模式和关系。
    • 缺点:对于一些数据分布,特别是存在大量低计数值的情况下,对数转换可能会引入噪音,使数据更难解释。此外,对数转换可能会导致丢失原始数据的一些信息。
  2. 皮尔逊近似残差(Analytic Pearson residuals)

    • 特点:利用正则化负二项回归得到的皮尔逊残差,通过计算数据中的技术噪声模型来归一化数据。
    • 优点:能够更准确地处理数据中的技术效应和生物异质性,避免了一些常见归一化方法可能引入的偏差。不需要额外的启发式步骤(如伪计数添加或对数转换)。
    • 缺点:相对于简单的对数转换方法,计算复杂度较高。

总的来说,移位对数适用于简单的数据集,对数转换可使数据更易于处理和分析;而皮尔逊近似残差则更适用于复杂的数据集,尤其是对于单细胞RNA测序数据很需要生物异质性的情况。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

百面算法工程师 | 传统图像处理——OpenCV

本文给大家带来的百面算法工程师是传统图像处理的面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们将介绍一些集几何变换和图像平滑处理,并提供参考的回答及其理论基础&…

JAVA 双亲委派之一

JAVA 双亲委派之一 JVM类加载流程 java语言系统内置了众多类加载器,从一定程度上讲,只存在两种不同的类加载器:一种是启动类加载器,此类加载由C实现,是JVM的一部分;另一种就是所有其他的类加载器&#xf…

QT作业5

1、聊天室 服务器端 //头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QListWidget> #include <QMessageBox> #include <QDebug> #includ…

第十五届蓝桥杯python B组省赛

前言&#xff1a; 这是我第一次参加蓝桥杯&#xff0c;成绩并不理想&#xff0c;我反思了一下午&#xff0c;我的问题主要是知识点学不透&#xff0c;题目做的太少&#xff0c;而且学习的时候少数时间不专心&#xff0c;但是&#xff0c;我能感觉到我的学习能力并不弱&#xf…

用云手机打造海外社媒矩阵

在全球经济一体化的大背景下&#xff0c;中国出海企业及B2B外贸公司正将海外社交媒体营销作为重要的市场拓展策略。为更好地触及不同受众群体&#xff0c;构建跨平台的社媒矩阵已成为企业营销的关键步骤。本文将探讨如何利用云手机技术&#xff0c;高效管理并运营多个海外社交媒…

CSS-页面导航栏实现-每文一言(过有意义的生活,做最好的自己)

&#x1f390;每文一言 过有意义的生活,做最好的自己 目录 &#x1f390;每文一言 &#x1f6d2;盒子模型 &#x1f453;外间距 (margin) &#x1f97c;边框 &#x1f45c;内边距 切换盒子模型计算方案&#xff1a; &#x1f3a2; 浮动布局 浮动特点 &#x1f3c6;导航…

Adobe Photoshop PS 25.6.0 解锁版 (最流行的图像设计软件)

前言 Adobe Photoshop 是一款专业强大的图片处理工具&#xff0c;从照片编辑和合成到数字绘画、动画和图形设计&#xff0c;一流的图像处理和图形设计应用程序是几乎每个创意项目的核心所在。利用 Photoshop 在桌面上的强大功能&#xff0c;您可以在灵感来袭时随时随地进行创作…

推荐3个实用的github开源项目

目录&#xff1a; 1、AI生成高清短视频 2、媒体平台爬虫 3、文本转语音项目

C++对象的拷贝构造函数

如果一个构造函数的第一个参数是类本身的引用,且没有其它参数(或者其它的参数都有默认值),则该构造函数为拷贝构造函数。 拷贝(复制)构造函数:利用同类对象构造一个新的对象 ●1.函数名和类同名 (构造函数) ●2.没有返回值 (构造函数) ●3.第一个参数必…

5.12母亲节营销攻略:TikTok助力出海品牌赢得用户心

母亲节&#xff0c;作为一个全球性的节日&#xff0c;不仅是表达对母亲的感激之情的时刻&#xff0c;也是品牌们展示创意、赢得用户心的黄金机会。2024母亲节将至&#xff0c;如何利用TikTok在母亲节这一特殊时刻进行营销&#xff0c;赢得用户的心&#xff0c;成为出海品牌必须…

Oracle count的优化-避免全表扫描

Oracle count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单&#xff0c;但很有玄机&#xff01;对这句话运行的理解&#xff0c;反映了你对数据库的理解深度&#xff01; 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table t1 purge…

会话劫持攻击就在我们身边,我们要如何防范

会话劫持攻击&#xff08;Session Hijacking&#xff09;是一种网络攻击方式&#xff0c;攻击者通过某种手段获取到用户的会话标识&#xff08;Session ID&#xff09;&#xff0c;然后使用这个会话标识冒充合法用户进行恶意操作。这种攻击方式允许攻击者以合法用户的身份访问受…

【Linux】Linux——Centos7安装Nginx

不需要安装包 1.安装依赖 #查看 C 环境是否安装gcc -v #查看 zlib 是否安装cat /usr/lib64/pkgconfig/zlib.pc #查看 pcre 是否安装pcre-config --version 2.安装C #安装C yum install gcc-c 3.安装pcre yum install -y pcre pcre-devel 4.安装zlib #安装 yum install -y zlib…

5.11学习记录

20长安杯部分 检材 1 的操作系统版本 CentOS Linux 7.6.1810 (Core) 检材 1 中&#xff0c;操作系统的内核版本是 3.10.0-957.el7.x86_64 检材 1 中磁盘包含一个 LVM 逻辑卷&#xff0c;该 LVM 开始的逻辑区块地址&#xff08;LBA&#xff09;是 2099200 物理卷&#xff…

【go项目01_学习记录10】

操作数据库 1 插入数据2 显示文章2.1 修改 articlesShowHandler() 函数2.2 代码解析 3 编辑文章3.1 添加路由3.2 编辑articlesEditHandler()3.3 新建 edit 模板3.4 代码重构3.5 完善articlesUpdateHandler()3.6 测试更新3.7 封装表单验证 1 插入数据 . . . func articlesStore…

STM32F103学习笔记 | 报错界面及解决方案 | 1.keil5中文注释的横竖(正与斜)问题

文章目录 一、报错界面二、解决方案参考文献 一、报错界面 二、解决方案 打开设置 在打开的设置选项卡中&#xff0c;图中Font显示的是这个软件当前设置的字体&#xff0c;可以看到字体是仿宋&#xff0c;这就是问题出现的原因&#xff0c;将之改成没有的字体就行了。 可以看…

一文了解spring事务特性

推荐工具 objectlog 对于重要的一些数据&#xff0c;我们需要记录一条记录的所有版本变化过程&#xff0c;做到持续追踪&#xff0c;为后续问题追踪提供思路。objectlog工具是一个记录单个对象属性变化的日志工具,工具采用spring切面和mybatis拦截器相关技术编写了api依赖包&a…

【.Net动态Web API】参数模型绑定来源

🚀前言 本文是《.Net Core进阶编程课程》教程专栏的导航站(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:通过源码实例来讲解Asp.Net Core进阶知识点,让大家完全掌握每一个知识点。 专栏适用于人群:Web后端开发人员 ———————————————— …

ABB机器人IRB360介绍

随着自动化技术的不断发展&#xff0c;分拣和包装行业的应用也越来越广泛。 工业机器人扮演的角色也随之不断增加&#xff0c;其中ABB机器人的一款产品IRB 360 FlexPicker 在抓取和包装技术方面占有重要的地位。与传统的刚性自动化技术相比较&#xff0c;IRB 360具有高灵活性、…

Navicat Data Modeler Ess for Mac:强大的数据库建模设计软件

Navicat Data Modeler Ess for Mac是一款专为Mac用户设计的数据库建模与设计工具&#xff0c;凭借其强大的功能和直观的界面&#xff0c;帮助用户轻松构建和管理复杂的数据库模型。 Navicat Data Modeler Ess for Mac v3.3.17中文直装版下载 这款软件支持多种数据库系统&#x…