Signac|成年小鼠大脑 单细胞ATAC分析(1)

引言

在本教程中,我们将探讨由10x Genomics公司提供的成年小鼠大脑细胞的单细胞ATAC-seq数据集。本教程中使用的所有相关文件均可在10x Genomics官方网站上获取。

本教程复现了之前在人类外周血单核细胞(PBMC)的Signac入门教程中执行的命令。我们通过在不同的系统上进行相同的分析,来展示其性能以及对不同组织类型的适用性,并提供了一个来自不同物种的示例。

实战

首先,我们需要导入Signac、Seurat等一些用于分析小鼠数据的软件包。

library(Signac)
library(Seurat)
library(EnsDb.Mmusculus.v79)

library(ggplot2)
library(patchwork)

预处理工作流程

counts <- Read10X_h5("../vignette_data/atac_v1_adult_brain_fresh_5k_filtered_peak_bc_matrix.h5")
metadata <- read.csv(
  file = "../vignette_data/atac_v1_adult_brain_fresh_5k_singlecell.csv",
  header = TRUE,
  row.names = 1
)

brain_assay <- CreateChromatinAssay(
  counts = counts,
  sep = c(":""-"),
  genome = "mm10",
  fragments = '../vignette_data/atac_v1_adult_brain_fresh_5k_fragments.tsv.gz',
  min.cells = 1
)

brain <- CreateSeuratObject(
  counts = brain_assay,
  assay = 'peaks',
  project = 'ATAC',
  meta.data = metadata
)

我们还可以向小鼠基因组的大脑对象添加基因注释。这将允许下游函数直接从对象中提取基因注释信息。

# extract gene annotations from EnsDb
annotations <- GetGRangesFromEnsDb(ensdb = EnsDb.Mmusculus.v79)

# change to UCSC style since the data was mapped to hg19
seqlevels(annotations) <- paste0('chr', seqlevels(annotations))
genome(annotations) <- "mm10"

# add the gene information to the object
Annotation(brain) <- annotations

计算 QC 指标

接下来我们计算一些有用的细胞 QC 指标。

brain <- NucleosomeSignal(object = brain)

我们可以分析所有细胞的DNA片段长度的周期性变化,并根据细胞核小体信号的强弱进行分类。观察结果表明,那些在单核小体与无核小体比例上表现异常的细胞,呈现出与其他细胞不同的条带图谱。而其他细胞则显示出了一次成功的ATAC-seq实验所特有的典型模式。

brain$nucleosome_group <- ifelse(brain$nucleosome_signal > 4'NS > 4''NS < 4')
FragmentHistogram(object = brain, group.by = 'nucleosome_group', region = 'chr1-1-10000000')
alt

在ATAC-seq实验中,Tn5转座酶在转录起始位点(TSS)处的整合事件的富集程度,是一个关键的质量控制指标,用于评价Tn5的定位效率。ENCODE联盟将TSS富集分数定义为TSS周围Tn5整合位点的计数与这些位点在相邻区域计数的比率。在Signac软件包中,我们可以使用TSSEnrichment()函数来为每个细胞计算这一富集分数。

brain <- TSSEnrichment(brain, fast = FALSE)

brain$high.tss <- ifelse(brain$TSS.enrichment > 2'High''Low')
TSSPlot(brain, group.by = 'high.tss') + NoLegend()
alt
brain$pct_reads_in_peaks <- brain$peak_region_fragments / brain$passed_filters * 100
brain$blacklist_ratio <- brain$blacklist_region_fragments / brain$peak_region_fragments

VlnPlot(
  object = brain,
  features = c('pct_reads_in_peaks''peak_region_fragments',
               'TSS.enrichment''blacklist_ratio''nucleosome_signal'),
  pt.size = 0.1,
  ncol = 5
)
alt

我们删除了这些 QC 指标异常值的细胞。

brain <- subset(
  x = brain,
  subset = peak_region_fragments > 3000 &
    peak_region_fragments < 100000 &
    pct_reads_in_peaks > 40 &
    blacklist_ratio < 0.025 &
    nucleosome_signal < 4 &
    TSS.enrichment > 2
)
brain

## An object of class Seurat 
## 157203 features across 3512 samples within 1 assay 
## Active assay: peaks (157203 features, 0 variable features)
##  2 layers present: counts, data

归一化和线性降维

brain <- RunTFIDF(brain)
brain <- FindTopFeatures(brain, min.cutoff = 'q0')
brain <- RunSVD(object = brain)

在分析中,LSI(线性判别分析)的第一个主成分往往反映的是测序的深度(即技术层面的变异),而非生物学上的变异。如果确实如此,那么在后续的分析中应该将这一成分排除掉。为了判断是否存在这种情况,我们可以通过调用DepthCor()函数来计算每个LSI主成分与测序深度之间的相关性。

DepthCor(brain)
alt

在这里,我们看到第一个 LSI 组件与细胞的计数总数之间存在非常强的相关性,因此我们将在没有该组件的情况下执行下游步骤。

非线性降维和聚类

细胞数据已经被嵌入到一个低维度的空间里,我们可以采用单细胞RNA测序(scRNA-seq)数据常用的分析方法,执行基于图谱的聚类分析,并通过非线性降维技术来进行数据可视化。RunUMAP()、FindNeighbors()和FindClusters()这些功能均集成在Seurat软件包中。

brain <- RunUMAP(
  object = brain,
  reduction = 'lsi',
  dims = 2:30
)
brain <- FindNeighbors(
  object = brain,
  reduction = 'lsi',
  dims = 2:30
)
brain <- FindClusters(
  object = brain,
  algorithm = 3,
  resolution = 1.2,
  verbose = FALSE
)

DimPlot(object = brain, label = TRUE) + NoLegend()
alt

本文由 mdnice 多平台发布

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

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

相关文章

100道大模型面试八股文

算法暑期实习机会快结束了&#xff0c;校招大考即将来袭。 当前就业环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;岗位在变少&#xff0c;要求还更高了。 最近&#xff0c;我们陆续整理了很多大厂的面试题&#xff0c;帮助球友解惑答疑和职业规划&#xff0c;分…

【Python报错】已解决ModuleNotFoundError: No Module Named ‘openyxl’

成功解决“ModuleNotFoundError: No Module Named ‘openyxl’”错误的全面指南 在Python编程中&#xff0c;遇到ModuleNotFoundError: No Module Named openyxl这样的错误通常意味着Python解释器无法找到名为openyxl的模块。然而&#xff0c;这里存在一个常见的拼写错误&#…

javascript中的flat和faltmap的区别

JavaScript 中的 flat 和 flatMap 是数组方法&#xff0c;它们用于处理嵌套数组&#xff08;即数组中的元素也是数组&#xff09;。下面是它们的区别&#xff1a; flat 方法: flat 方法用于将嵌套数组“展平”成一个新数组&#xff0c;但不会改变原始数组。它接受一个可选的深…

Anaconda 环境管理的一些特殊操作

在指定位置创建虚拟环境 第一步&#xff1a;在现有/your/paht/目录创建env_name的环境变量 conda create -p /your/paht/env_name python3.x第二步&#xff1a;通过一下命令发现环境变量没有名字&#xff1a; conda env list第三步&#xff1a;将/your/paht/ 加入到conda 的en…

资源描述框架的用途及实际应用解析

什么是RDF&#xff1f; RDF代表 资源描述框架 RDF是用于描述网络资源的框架 RDF旨在被计算机阅读和理解 RDF并非设计用于供人阅读 RDF以 XML 编写 示例 描述购物商品的属性&#xff0c;如价格和可用性描述网络活动的时间表描述网页的信息&#xff08;内容&#xff0c;作者&a…

使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现

在分布式系统架构日益流行的今天&#xff0c;服务配置管理和发现成为了开发和运维团队面临的重大挑战。Nacos&#xff0c;作为阿里巴巴开源的一款强大的动态配置管理与服务发现平台&#xff0c;为解决这一难题提供了有效方案。本文将介绍如何在C# (.NET Core)应用程序中集成Nac…

springboot,配置类加载过程

加载过程 首先来看启动类&#xff0c;启动类上包含了SpringBootApplication注解 SpringBootApplication MapperScan("com.cskaoyan.mapper") public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);…

后端开发面经系列 --中望C++面经

中望C面经&#xff0c;全部内容&#xff01; 公众号&#xff1a;阿Q技术站 文章目录 中望C面经&#xff0c;全部内容&#xff01;一面 8.15 时长45min1、介绍项目相关2、gdb怎么调试的&#xff1f;打断点用什么指令&#xff1f;3、gcc的编译过程4、cmake添加头文件搜索路径用…

Werkzeug的Response

Werkzeug的Response Werkzeug是一个WSGI工具包&#xff0c;提供了一组工具用于开发基于WSGI的Python Web应用。它不仅仅是一个简单的库&#xff0c;还提供了许多方便的工具来处理HTTP请求和响应。本文将深入探讨Werkzeug中Response类的讲解。 官方文档链接 Werkzeug Respons…

大语言模型 (LLM) 窥探未来

随着2023年的岁月渐渐走向尾声&#xff0c;我们站在人工智能的前沿&#xff0c;回望大语言模型&#xff08;Large Language Models, LLM&#xff09;所走过的道路&#xff0c;同时也不禁展望未来。从初步尝试到成为人工智能领域的万千宠爱&#xff0c;一种又一种的技术突破&…

搜维尔科技:「案例」Faceware电影中面部动画的演变历程

面部动画是电影中角色表演的一个重要方面&#xff0c;尤其是在严重依赖电子动画、化妆效果和动作捕捉系统的奇幻电影中。在《龙与地下城&#xff1a;盗贼荣誉》电影中&#xff0c;龙裔角色的面部动画是一个复杂的系统&#xff0c;使该生物在大屏幕上栩栩如生。该系统依赖于一种…

超速解读多模态InternVL-Chat1.5 ,如何做到开源SOTA——非官方首发核心技巧版(待修订)

解读InternVL-chat1.5系列 最近并行是事情太杂乱了&#xff0c;静下心来看一看优秀的开源项目,但是AI技术迭代这么快&#xff0c;现在基本是同时看五、六个方向的技术架构和代码&#xff0c;哪个我都不想放&#xff0c;都想知道原理和代码细节&#xff0c;还要自己训练起来&am…

特征工程,减小过拟合

目录 特征工程 减小过拟合 图像增强方法 特征工程是机器学习和数据分析中不可或缺的一环,其重要性不言而喻。以下是关于特征工程的详细回答: 一、定义 特征工程是将原始数据转化为更好的表达问题本质的特征的过程,旨在发现对因变量y有明显影响作用的特征(通常称自变量…

Linux驱动开发笔记(四)设备树进阶及GPIO、Pinctrl子系统

文章目录 前言一、设备树的进阶知识1. 追加/修改节点内容2.chosen子节点3. 获取设备树节点信息3.1 of_find_node_by_path( )函数3.2 of_find_node_by_name( )函数3.3 of_find_node_by_type( )函数3.4 of_find_compatible_node( )函数3.5 of_find_matching_node_and_match( )函数…

Day30 登录界面设计

​ 本章节,实现了登录界面窗口设计 一.准备登录界面图片素材(透明背景图片) 把准备好的图片放在 Images 文件夹下面,格式分别是 .png和 .icoico 图片,右键属性,生成操作选 内容 png 图片,右键属性,生成操作选 资源 选中 login.png图片鼠标右键,选择属性。生成的操作选…

多目标应用:MOHHO多目标哈里斯鹰优化算法求解无人机三维路径规划(MATLAB代码)

详细介绍 多目标应用&#xff1a;MOHHO多目标哈里斯鹰优化算法求解无人机三维路径规划&#xff08;MATLAB代码&#xff09;-CSDN博客 一次运行结果 完整MATLAB代码

CentOS6系统因目录有隐含i权限属性致下属文件无法删除的故障一例

CentOS6服务器在升级openssh时因系统目录权限异常&#xff08;有隐含i权限属性&#xff09;&#xff0c;下属文件无法删除&#xff0c;导致系统问题的故障一例。 一、问题现象 CentOS6在升级openssh时&#xff0c;提示如下问题&#xff1a; warning: /etc/ssh/sshd_config c…

springboot vue 开源 会员收银系统 (6) 收银台的搭建

前言 完整版演示 前面我们对会员系统 分类和商品的开发 完成了收银所需的基础信息 下面我们开始完成收银台的开发 简单画了一个收银的流程图大家参考下 从这张图我们可以分析一下几点 可以选择会员或散客收银选择会员使用相应的会员价结算使用会员卡则在价格基础根据卡折扣…

function和bind使用实践

文章目录 1.functional 接受全局函数2.functional 接受lambda表达式3.functional 接收静态成员函数4.functional 接收成员函数5.bind 绑定全局函数6.bind 绑定成员函数7.使用 placeholders占位 1.functional 接受全局函数 2.functional 接受lambda表达式 3.functional 接收静…

node.js漏洞——

一.什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境&#xff0c;基于 Google 的 V8 引擎&#xff0c;V8 引擎执行 Javascript 的速度非常…