首页 > 其他分享 >DecoupleR/CollecTRI network-单细胞转录因子活性分析

DecoupleR/CollecTRI network-单细胞转录因子活性分析

时间:2024-05-31 21:02:19浏览次数:17  
标签:network DecoupleR library CollecTRI source 转录 ulm ABL1 TFs

DecoupleR包是一个可以从组学数据中分析内部生物学活性的计算方法集合。该R包内部收纳了11种分析方法,包括GSVA,GSEA,univariate linear model (ULM),VIPER等。

PMID:36699385

根据包含的计算方法,我们也能大概的知道decoupleR包能够做哪些分析了,包括基本分析(AUCell,Fast GSEA, GSVA和viper),bulk/scRNA-seq的通路活性、转录因子分析,转录因子和激酶活性分析。这次我们主要学习一下如何使用该R包进行scRNA-seq的转录因子活性分析。

github链接:https://saezlab.github.io/decoupleR/index.html

那么在进行分析之前,首先需要理解一下"转录因子在特定细胞中的活性水平"这个概念。粗略来说可以理解为转录因子(TFs)对其靶基因发挥调控潜能的程度,所以这个调控潜能的程度高低并不一定意味着跟转录因子的表达量有密切的正相关,而是TFs跟这个细胞中所表达的基因中的TFs靶基因的表达情况的“相关性打分”。

PMID:33135076

从代码分析的角度来看,为了推断TFs的活性分数,需要采用单变量线性模型(ulm)方法。对于数据集中的每个样本(每一个单细胞)和TFs数据集中的每个TFs拟合一个线性模型,该模型是基于TFs的TFs-基因的相互作用权重来预测观察到的基因表达。拟合后,得到的斜率t值就是得分。如果它是阳性的,就解释为TFs是活跃的,如果它是阴性的,就认为它是非活跃的。

此外,我们还需要获得TFs的调控子(可以认为是TFs-靶基因集群)的数据集。目前推荐使用CollecTRI(比DoRothEA更全面),这个资源整合了多个来源的数据集,目前纳入了1186个TFs和43175个有一定证据的TF-基因相互作用数据。

PMID:37843125

具体分析流程

1.数据读取和加载R包

我这里采用的GSE148190-SM4455931-10X样本

Step1.final.Rdata已经是经过了降维、聚类、分群后的结果。

rm(list=ls())
library(Seurat)
library(decoupleR)
library(dplyr)
library(tibble)
library(tidyr)
library(patchwork)
library(ggplot2)
library(pheatmap)

load("step1.final.Rdata")
sce <- step1.final
table(Idents(sce))

2.先看一下聚类图

DimPlot(sce,label = T,repel = T) 

3.转录因子分析

#多线程模式
plan("multisession", workers = 4)
#获取转录因子数据
net <- get_collectri(organism='human', split_complexes=FALSE)
net
# A tibble: 43,178 × 3
#   source target   mor
#   <chr>  <chr>  <dbl>
# 1 MYC    TERT       1
# 2 SPI1   BGLAP      1
# 3 SMAD3  JUN        1
# 4 SMAD4  JUN        1
# 5 STAT5A IL2        1
# 6 STAT5B IL2        1
# 7 RELA   FAS        1
# 8 WT1    NR0B1      1
# 9 NR0B2  CASP1      1
# 10 SP1    ALDOA      1
# ℹ 43,168 more rows
# ℹ Use `print(n = ...)` to see more rows

#提取数据
mat <- as.matrix(sce@assays$RNA@data)
#下面的运算会耗费一点时间,取决于线程数量和CPU算力
acts <- run_ulm(mat, net,minsize = 5,
                .source='source', .target='target',.mor='mor')
acts
# A tibble: 1,933,792 × 5
#   statistic source condition             score p_value
#   <chr>     <chr>  <chr>                 <dbl>   <dbl>
# 1 ulm       ABL1   AAACCTGAGGACGAAA-1  0.274   0.784  
# 2 ulm       ABL1   AAACCTGAGGGTGTTG-1  0.724   0.469  
# 3 ulm       ABL1   AAACCTGCAAGGACTG-1  2.29    0.0221 
# 4 ulm       ABL1   AAACCTGCAATCTGCA-1 -0.423   0.673  
# 5 ulm       ABL1   AAACCTGCACTGTTAG-1 -0.00305 0.998  
# 6 ulm       ABL1   AAACCTGGTCTAGTGT-1  3.01    0.00262
# 7 ulm       ABL1   AAACCTGTCGTACCGG-1  0.550   0.582  
# 8 ulm       ABL1   AAACGGGAGGCAATTA-1  1.51    0.131  
# 9 ulm       ABL1   AAACGGGAGGTGCTTT-1  0.312   0.755  
#10 ulm       ABL1   AAACGGGCAGCCTATA-1  0.896   0.370  
# ℹ 1,933,782 more rows
# ℹ Use `print(n = ...)` to see more rows

#提取获得的数据,修改格式并保存
sce[['tfsulm']] <- acts %>%
  pivot_wider(id_cols = 'source', 
              names_from = 'condition',
              values_from = 'score') %>%
  column_to_rownames('source') %>%
  Seurat::CreateAssayObject(.)
#更改默认的分析对象
DefaultAssay(object = sce) <- "tfsulm"
#缩放数据并重新保存
sce <- ScaleData(sce)
sce@assays$tfsulm@data <- sce@[email protected]

4.可视化

p1 <- DimPlot(sce, reduction = "umap", 
              label = TRUE, pt.size = 0.5) + 
      NoLegend() + ggtitle('Cell types')
p1

p2 <- (FeaturePlot(sce, features = c("E2F1")) & 
  scale_colour_gradient2(low = 'blue', mid = 'white', high = 'red')) +
  ggtitle('E2F1 activity')
p2

DefaultAssay(object = sce) <- "RNA"
p3 <- FeaturePlot(sce, features = c("E2F1")) + 
          ggtitle('PAX5 expression')
p3

DefaultAssay(object = sce) <- "tfsulm"
p1 + p2 + p3

挑选了一个很常见的转录因子E2F1,从表达量分析看它似乎”价值不大“,但从TFs活性分析来看其在CD4 T,CD8 T和B细胞中都显示出了较大的活性。

5.top25的TFs

n_tfs <- 25
#提取活性数据并修改数据格式
df <- t(as.matrix(sce@assays$tfsulm@data)) %>%
  as.data.frame() %>%
  mutate(cluster = Idents(sce)) %>%
  pivot_longer(cols = -cluster, #指定除cluster列以外的都需要转换
               names_to = "source", #列名放到source列中
               values_to = "score") %>% #值放到score列中
  group_by(cluster, source) %>% #将数据按cluster和source两列进行分组
  summarise(mean = mean(score))

#获得不同簇中活性差异较大的TFs
tfs <- df %>%
  group_by(source) %>%
  summarise(std = sd(mean)) %>%
  arrange(-abs(std)) %>%
  head(n_tfs) %>%
  pull(source)

#修改数据格式
top_acts_mat <- df %>%
  filter(source %in% tfs) %>%
  pivot_wider(id_cols = 'cluster', 
              names_from = 'source',
              values_from = 'mean') %>%
  column_to_rownames('cluster') %>%
  as.matrix()

#绘图
palette_length = 100
my_color = colorRampPalette(c("Darkblue","white","red"))(palette_length)

my_breaks <- c(seq(-3, 0, length.out=ceiling(palette_length/2) + 1),
               seq(0.05, 3, length.out=floor(palette_length/2)))

#显示
pheatmap(top_acts_mat, 
         border_color = NA,
         color=my_color, 
         breaks = my_breaks) 


参考文献:

1.Pau Badia-I-Mompel, Jesús Vélez Santiago, Jana Braunger et al. decoupleR: ensemble of computational methods to infer biological activities from omics data. Bioinform Adv. 2022 Mar 8;2(1):vbac016. doi: 10.1093/bioadv/vbac016 IF: NA NA NA.

2.Cynthia Z Ma, Michael R Brent et al. Inferring TF activities and activity regulators from gene expression data with constraints from TF perturbation data. Bioinformatics. 2021 Jun 9;37(9):1234-1245.

3.Sophia Müller-Dott, Eirini Tsirvouli, Miguel Vazquez et al. Expanding the coverage of regulons from high-confidence prior knowledge for accurate estimation of transcription factor activities. Nucleic Acids Res. 2023 Nov 10;51(20):10934-10949.

:若对内容有疑惑或者发现有明确错误的朋友,请联系后台(希望多多交流)。更多内容可关注公众号:生信方舟

- END -

标签:network,DecoupleR,library,CollecTRI,source,转录,ulm,ABL1,TFs
From: https://blog.csdn.net/zfyyzhys/article/details/139318312

相关文章

  • 【校园网网络维修】福禄克FLUKECIQ100网络测试指南FLUKE Network 电缆测试仪/网络测试
    FLUKECIQ100网络测试——网络测线下方指针转到discover模式,检测交换机并显示连接设置(速度/双工/线对)大的带显示器的在宿舍接墙线使用小的适配器在机房接另一端RJ45水晶头使用产品参数介绍:在宿舍区校园网的使用情境下,我们一般只介绍discover模式的使用相关介绍:  ......
  • Learning Latent Permutations with Gumbel-Sinkhorn Networks
    目录概SinkHornoperatorMeanG.E.,BelangerD.,LindermanC.andSnoekJ.Learninglatentpermutationswithgumbel-sinkhornnetworks.ICLR,2018.概本文提出了一种自动学习permutations的方法.SinkHornoperatorSinkHornoperator的操作流程如下:\[S^{0}(......
  • POSEIDON: Privacy-Preserving Federated NeuralNetwork Learning
    写在最前面,感觉这一篇的技术更贴近于密码学,所以部分核心技术读起来比较吃力。仅供大家参考哇~Abstract—Inthispaper,weaddresstheproblemofprivacypreservingtrainingandevaluationofneuralnetworksinanN-party,federatedlearningsetting.Weproposea......
  • 论文阅读:Multi-Grained Dependency Graph Neural Network for Chinese Open Informati
    LyuZ,ShiK,LiX,etal.Multi-graineddependencygraphneuralnetworkforChineseopeninformationextraction[C]//Pacific-AsiaConferenceonKnowledgeDiscoveryandDataMining.Cham:SpringerInternationalPublishing,2021:155-167.MGD-GNN开源代码引言......
  • Calico 组网(Networking)
    确定最佳网络选项了解Calico支持的不同网络选项,以便您可以选择最适合您需求的选项。Calico灵活的模块化架构支持广泛的部署选项,因此您可以选择适合您的特定环境和需求的最佳网络方法。这包括能够以非覆盖或覆盖模式、带或不带BGP运行各种CNI和IPAM插件以及底层网络类型......
  • XShell执行systemctl stop network命令后断开连接,并重连失败
    在XShell中执行命令systemctlstopnetwork后,断开了与虚拟机的连接,进行重新连接,显示连接失败,停止虚拟机网络服务后,XShell无法继续连接。需要重启虚拟机的网络服务【1】重启解决systemctlstopnetwork是暂时关闭服务,不是永久的,所以重启后会自启。在主机有网络的情况下,重启......
  • 残差网络(Residual Network)
    在VGG中,卷积网络达到了19层,在GoogLeNet中,网络史无前例的达到了22层。那么,网络的精度会随着网络的层数增多而增多吗?在深度学习中,网络层数的增多一般会伴着下面几个问题:1.计算资源的消耗2.模型容易过拟合3.梯度消失/梯度爆炸问题的产生问题1可以通过GPU集群来解决,对于一个企业资......
  • Wireless Network
    描述AnearthquaketakesplaceinSoutheastAsia.TheACM(AsiaCooperatedMedicalteam)havesetupawirelessnetworkwiththelapcomputers,butanunexpectedaftershock(预余震)attacked,allcomputersinthenetworkwereallbroken.Thecomputersarerepai......
  • KAN: Kolmogorov–Arnold Networks 学术论文全译
    KAN:Kolmogorov–ArnoldNetworks学术论文全译来源 https://zhuanlan.zhihu.com/p/696001648 KAN:Kolmogorov–ArnoldNetworks https://arxiv.org/pdf/2404.19756讨论Applicationaspects:WehavepresentedsomepreliminaryevidencesthatKANsaremoreeffective......
  • 网络策略_NetworkPolicy
    网络策略NetworkPolicy前端通过访问后端的API接口来获取数据库中的数据前端、API接口、数据库在k8s中都为podk8s要求所有pod可以互相访问,但生产中,不能让前端直接访问后端数据库目标是保护数据库,使其不允许从除了API以外的任何pod访问apiVersion:networking.k8s.io/v1kind:......