如何确定公共转录组数据集的来源性别

2024-06-23 19:58

本文主要是介绍如何确定公共转录组数据集的来源性别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

太长不看版: 文献报道XIST和RPS4Y1是区分性别的两个高可信度的标记基因,因此你没有必要去用其他性染色体上的基因去确定数据集的性别。

不仅仅是在使用公共的单细胞转录组数据,其实早在公共芯片数据或者RNA-seq数据挖掘中,就有人在考虑一个问题,这个数据的元信息作者会不会搞错了呢?

以性别为例,我们很容易想到表达Y染色体上基因数据肯定是男性,但是我们也知道基因也不是任何时刻都表达,所以如果一个Y染色体上的基因不表达,ta未必是女性。因此我们需要一个比较可靠的标记基因,来确保对性别的区别是正确的。

我最初的想法,也是对Y染色体的基因逐个看表达,但是转念想到,在我这个数据集中有用的标记未必适用于其他数据集呀。因此通过一波检索,我找到了一篇文献,里面给出了两个关键基因,XIST和RPS4Y1。

文献支持

接着我用Seurat提供的一个公共数据集进行测试,这个数据包括了不同技术处理的PBMC数据,预处理的代码如下。

library(Seurat)
library(harmony)
data("pbmcsca")
library(dplyr)pbmc <-  pbmcsca%>%Seurat::NormalizeData(verbose = FALSE) %>%FindVariableFeatures(selection.method = "vst", nfeatures = 2000) %>% ScaleData(verbose = FALSE) %>% RunPCA(pc.genes = pbmc@var.genes, npcs = 20, verbose = FALSE)pbmc <- RunHarmony(pbmc, c("Experiment", "Method"))
pbmc <- RunUMAP(pbmc, reduction = "harmony", dims = 1:20)

最终我们获得了使用harmony去除批次效应后的数据集,接着我们用小提琴图分来源对XIST和RPS4Y1进行可视化

VlnPlot(pbmc, c("XIST","RPS4Y1"), group.by = "Method")

结果如下

小提琴图1

你会很奇怪为什么CEL-Seq2, Drop-Seq, InDrops, Seq-Well,Smart-seq2什么同时表达这两个基因呢?

很简单,因为这几种方法同时还包括两种实验,pbmc1和pbmc2

分群比较

当我们筛选所有的pbmc1实验进行展示

pbmc_sub <- subset(pbmc,  Experiment == "pbmc1")
VlnPlot(pbmc_sub, c("XIST","RPS4Y1"), group.by = "Method")

你会发现这两个是完美的互斥关系

pbmc1

如果你筛选出pbmc2进行展示
pbmc_sub <- subset(pbmc,  Experiment == "pbmc2")
VlnPlot(pbmc_sub, c("XIST","RPS4Y1"), group.by = "Method")

同样的,你得到一个完美的互斥结果

pbmc2

小结: XIST和RPS4Y1是区分性别的两个高可信度的标记基因,如果以后使用人的公共数据集的时候,可以用这个两个基因确定性别。

参考资料:

  • https://www.sciencedirect.com/topics/neuroscience/xist-gene
  • https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3275083/
  • https://www.sciencedirect.com/science/article/pii/S1872497316302034

这篇关于如何确定公共转录组数据集的来源性别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088131

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很