美文网首页单细胞测序单细胞测序
单细胞转录组多样本分析之 - Covarying Neighbo

单细胞转录组多样本分析之 - Covarying Neighbo

作者: Ace423 | 来源:发表于2021-06-07 23:40 被阅读0次

    随着单细胞数据的大爆发,越来越多的方法致力于研究多样本中的细胞种类或状态如何和样本的标签(attributes)联系起来,旨在这种联系(association)可以被用来指导治疗。简单来看一下最近在预印本(biorxiv)发布的Covarying Neighborhood Analysis这个方法。它主要完成两件事:1)寻找在样本间共同变化的转录空间(covarying neighborhoods);2)用统计方法检测共转录空间是否和样本标签相关联。

    先看原理示意图(手画图出乎意料的萌~)。A)首先对所有样本做integration并建立shared nearest neighbor (SNN) network(这个可以跑Scanpy或Seurat得到)。然后对每一个细胞选定它的neighborhood,具体用random walk的方法,在固定步数内能走到选定细胞的细胞会被划入该细胞的neighborhood。B,C)当我们再次把样本分开,就可以得到矩阵neighborhood abundance matrix(NAM),其行是每个样本,列是每个neighborhood,而值代表某个样本在某个neighborhood的密集程度。D)最后对NAM做因式分解(factorization),软件使用PCA,得到NAM-PC。这时可以发现neighborhood的NAM-PC loadings实际代表了共转录空间而sample的NAM-PC loadings则代表了该共转录空间在每个样本中的呈现。

    Screen Shot 2021-04-24 at 4.49.32 PM.png

    接下来用软件自带的demo测试一下。首先安装软件:

    pip install cna
    

    加载所需软件并加载测试数据。简单说明一下这个测试数据有50个样本,三个特征量case/control, gender和batch。每个样本模拟了200个细胞,50个基因的表达矩阵。

    import numpy as np
    import matplotlib.pyplot as plt
    import cna
    np.random.seed(0)
    
    # read in dataset
    d = cna.read('data.h5ad')
    

    直接用association函数来检测和case/control相关联的neighborhoods(软件会自动检测NAM有没有计算过,如没有则会自动计算)。如下图所示,左边的细胞显示出对case更高的关联,也就是说左边的细胞中更多的细胞来自case。

    # perform association test for case/ctrl status
    res = cna.tl.association(d, d.samplem.case, covs=d.samplem[['male']], batches=d.samplem.batch)
    
    # visualize the results
    cna.pl.umap_ncorr(d, res,
                scatter0={'alpha':0.5, 's':20},
                scatter1={'alpha':0.05, 's':20})
    plt.title('p = {:.2e}'.format(res.p))
    plt.show()
    
    Screen Shot 2021-04-25 at 8.28.17 PM.png

    再检测另一个特征量gender。可以看到左边的细胞中有一小簇(红色)与性别高度相关,说明这一小簇细胞更多来自于男性(设置了male为1)。

    # perform association test for male sex
    res = cna.tl.association(d, d.samplem.male, covs=d.samplem[['case']], batches=d.samplem.batch)
    
    # visualize the results
    cna.pl.umap_ncorr(d, res,
                scatter0={'alpha':0.5, 's':20},
                scatter1={'alpha':0.05, 's':20})
    plt.title('p = {:.2e}'.format(res.p))
    plt.show()
    
    Screen Shot 2021-04-25 at 9.12.30 PM.png

    感觉上该方法还是值得一试的,尤其是对自己数据的聚类不太满意的情况下。

    Reference:
    https://www.biorxiv.org/content/10.1101/2021.04.19.440534v1.full
    https://github.com/yakirr/cna

    相关文章

      网友评论

        本文标题:单细胞转录组多样本分析之 - Covarying Neighbo

        本文链接:https://www.haomeiwen.com/subject/srcsrltx.html