Post-GWAS: single-cell disease relevance score (scDRS) 分析

news2024/11/28 6:52:01

1、scDRS的计算原理如下所示:

图片来源:Zhang M J, Hou K, Dey K K, et al. Polygenic enrichment distinguishes disease associations of individual cells in single-cell RNA-seq data[R]. Nature Publishing Group, 2022.

2、通过scDRS分析可以得到什么

第一、鉴定表型相关的细胞类型,比如下图:

第二、发现疾病的subpopulations:

3、scDRS安装与运行

3.1 下载、安装

#下载安装jupyter
pip3 install jupyter

#下载安装scDRS
git clone https://github.com/martinjzhang/scDRS.git
cd scDRS
git checkout -b v102 v1.0.2
pip install -e .

3.2 测试安装成功了没有

python -m pytest tests/test_CLI.py -p no:warnings

3.3 下载测试数据

wget https://figshare.com/ndownloader/files/34300925 -O data.zip
unzip data.zip && \
mkdir -p data/ && \
mv single_cell_data/zeisel_2015/* data/ && \
rm data.zip && rm -r single_cell_data

3.4 加载环境

#打开jupyter
jupyter notebook

打开jupyter后,我们转战到jupyter中工作。注意,后续所有的分析均在jupyter中实现。

#在jupyter中输入
import scdrs
import scanpy as sc
sc.set_figure_params(dpi=125)
from anndata import AnnData
from scipy import stats
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import os
import warnings

warnings.filterwarnings("ignore")

3.5 使用 MAGMA 计算疾病在基因水平的关联水平

该步骤参考教程:# 基于 MAGMA 的 gene-based 关联分析研究

得到gene-based 水平的zscore值后,将其整理成如下格式,文件名为geneset.zscore

第一列是基因名,第二列是SCZ的gene-based zscore值,第三列是Height的gene-based zscore值;

3.6 将 MAGMA 输出的结果转为scDRS的格式

# Select top 1,000 genes and use z-score weights
!scdrs munge-gs \
    --out-file single_cell_data/zeisel_2015/processed_geneset.gs \
    --zscore-file single_cell_data/zeisel_2015/geneset.zscore \
    --weight zscore \
    --n-max 1000

结果文件processed_geneset.gs如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fG0UpLCT-1671109533759)(null)]

3.7 计算每个细胞的表型富集度

%%capture
#新建一个输出文件夹
!mkdir -p single_cell_data/cwy
#开始计算富集度
!scdrs compute-score \
    --h5ad-file single_cell_data/zeisel_2015/expr.h5ad \
    --h5ad-species mouse \
    --gs-file single_cell_data/zeisel_2015/processed_geneset.gs \
    --gs-species mouse \
    --cov-file data/cov.tsv \
    --flag-filter-data True \
    --flag-raw-count True \
    --flag-return-ctrl-raw-score False \
    --flag-return-ctrl-norm-score True \
    --out-folder single_cell_data/cwy/

3.8 可视化scDRS结果

dict_score = {
    trait: pd.read_csv(f"single_cell_data/cwy/{trait}.full_score.gz", sep="\t", index_col=0)
    for trait in df_gs.index
}

for trait in dict_score:
    adata.obs[trait] = dict_score[trait]["norm_score"]

sc.set_figure_params(figsize=[2.5, 2.5], dpi=150)
sc.pl.umap(
    adata,
    color="level1class",
    ncols=1,
    color_map="RdBu_r",
    vmin=-5,
    vmax=5,
)

sc.pl.umap(
    adata,
    color=dict_score.keys(),
    color_map="RdBu_r",
    vmin=-5,
    vmax=5,
    s=20,
)

结果如下所示:

可见,SCZ疾病注意富集在Pyramidal CA1细胞;

3.9 分析疾病在不同细胞的表达水平差异

for trait in ["SCZ", "Height"]:
    !scdrs perform-downstream \
        --h5ad-file single_cell_data/zeisel_2015/expr.h5ad \
        --score-file single_cell_data/cwy/{trait}.full_score.gz \
        --out-folder  single_cell_data/cwy/ \
        --group-analysis level1class \
        --flag-filter-data True \
        --flag-raw-count True

SCZ在不同细胞的表达水平差异:

# scDRS group-level statistics for SCZ
!cat single_cell_data/cwy/SCZ.scdrs_group.level1class | column -t -s $'\t'

可以看到,SCZ在Pyramidal CA1细胞表达较多;

Height在不同细胞的表达水平差异:

# scDRS group-level statistics for Height
!cat single_cell_data/cwy/Height.scdrs_group.level1class | column -t -s $'\t'

3.10 对疾病在不同细胞的表达水平差异进行可视化

dict_df_stats = {
    trait: pd.read_csv(f"single_cell_data/cwy/{trait}.scdrs_group.level1class", sep="\t", index_col=0)
    for trait in ["SCZ", "Height"]
}
dict_celltype_display_name = {
    "pyramidal_CA1": "Pyramidal CA1",
    "oligodendrocytes": "Oligodendrocyte",
    "pyramidal_SS": "Pyramidal SS",
    "interneurons": "Interneuron",
    "endothelial-mural": "Endothelial",
    "astrocytes_ependymal": "Astrocyte",
    "microglia": "Microglia",
}

fig, ax = scdrs.util.plot_group_stats(
    dict_df_stats={
        trait: df_stats.rename(index=dict_celltype_display_name)
        for trait, df_stats in dict_df_stats.items()
    },
    plot_kws={
        "vmax": 0.2,
        "cb_fraction":0.12
    }
)

可视化结果如下所示:

可以看到CA1 pyramidal在SCZ和height的差异是最明显的。
因此接下来就提取CA1 pyramidal细胞进行重聚类,解析导致SCZ和height差异的细胞。

3.11 解析不同疾病在某类细胞的异质来源

# extract CA1 pyramidal neurons and perform a re-clustering
adata_ca1 = adata[adata.obs["level2class"].isin(["CA1Pyr1", "CA1Pyr2"])].copy()
sc.pp.filter_cells(adata_ca1, min_genes=0)
sc.pp.filter_genes(adata_ca1, min_cells=1)
sc.pp.normalize_total(adata_ca1, target_sum=1e4)
sc.pp.log1p(adata_ca1)

sc.pp.highly_variable_genes(adata_ca1, min_mean=0.0125, max_mean=3, min_disp=0.5)
adata_ca1 = adata_ca1[:, adata_ca1.var.highly_variable]
sc.pp.scale(adata_ca1, max_value=10)
sc.tl.pca(adata_ca1, svd_solver="arpack")

sc.pp.neighbors(adata_ca1, n_neighbors=10, n_pcs=40)
sc.tl.umap(adata_ca1, n_components=2)

# assign scDRS score
for trait in dict_score:
    adata_ca1.obs[trait] = dict_score[trait]["norm_score"]
sc.pl.umap(
    adata_ca1,
    color=dict_score.keys(),
    color_map="RdBu_r",
    vmin=-5,
    vmax=5,
    s=20,
)

3.12 检测疾病与某类细胞的相关性水平

spatial_col = "Dorsal"
for trait in ["SCZ", "Height"]:
    df_score = dict_score[trait].reindex(adata_ca1.obs.index)
    ctrl_cols = [col for col in df_score.columns if col.startswith("ctrl_norm_score")]
    n_ctrl = len(ctrl_cols)

    # Pearson's r between trait score and spatial score
    data_r = stats.pearsonr(df_score["norm_score"], adata_ca1.obs[spatial_col])[0]

    # Regression: control score ~ spatial score
    ctrl_r = np.zeros(len(ctrl_cols))
    for ctrl_i, ctrl_col in enumerate(ctrl_cols):
        ctrl_r[ctrl_i] = stats.pearsonr(df_score[ctrl_col], adata_ca1.obs[spatial_col])[
            0
        ]
    pval = (np.sum(data_r <= ctrl_r) + 1) / (n_ctrl + 1)

    print(f"{trait} v.s. {spatial_col}, Pearson's r={data_r:.2g} (p={pval:.2g})")

结果如下所示:
SCZ v.s. Dorsal, Pearson’s r=0.43 (p=0.001)
Height v.s. Dorsal, Pearson’s r=0.04 (p=0.37)


致谢橙子牛奶糖(陈文燕),请用参考模版:We thank the blogger (orange_milk_sugar, Wenyan Chen) for XXX

感谢小可爱们多年来的陪伴, 我与你们一起成长~

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

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

相关文章

XDisplay 安装教程

Splashtop Wired XDisplay 安装教程1. 概述2. Splashtop XDisplay 详细安装教程2.1 下载 Splashtop XDisplay2.2 电脑上安装 Splashtop XDisplay2.3 iPad安装 Splashtop XDisplay3. 遇到的问题3.1 下载 iTunes3.2 安装 iTunes3.3 打开 iTunes3.4 同意许可协议4. iPad连接Window…

学会用这个键,Word做得比领导还整齐, 早早下班不是梦

大家比较常用到哪些快捷键呢&#xff1f;快捷键用得熟练&#xff0c;工作效率可是会大大提高的。下面介绍4类常用的Word快捷键&#xff0c;希望能够帮到你&#xff0c;大家一起提高效率&#xff0c;早早下班&#xff01;一、字体样式&#xff1a;平常更改字体样式&#xff0c;总…

【openEuler系列】部署文件共享服务Samba

个人名片&#xff1a; 对人间的热爱与歌颂&#xff0c;可抵岁月冗长&#x1f31e; Github&#x1f468;&#x1f3fb;‍&#x1f4bb;&#xff1a;念舒_C.ying CSDN主页✏️&#xff1a;念舒_C.ying 个人博客&#x1f30f; &#xff1a;念舒_C.ying 1 配置环境 挂载系统ISO&am…

李沐精读论文:GAN

论文&#xff1a;https://papers.nips.cc/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf 视频&#xff1a;GAN论文逐段精读【论文精读】_哔哩哔哩_bilibili 课程&#xff1a;CS231n 2022PPT笔记- 生成模型Generative Modeling ​李宏毅机器学习——对抗生成网络…

基本算法学习记录---Day2

并查集模板1 class Solution {int[] root new int[200000];public int Que() {//初始化for(int i 1;i<n;i){root[i] i;}//TODO}//找根(将节点连接)public int find(int x){if(root[x] ! x){root[x] find(root[x]);}return root[x];}//合并public void heb(int i,int j)…

快速突出重点数据,条件样式来帮你

使用条件样式可以实现使用样式标注符合规则的数据&#xff0c;可以帮助直观查看数据、发现关键数据问题和数据的变化趋势。例如&#xff1a; 使用红色文字标注同比增幅小于10%的省份 使用红色文字标注同比增幅小于10%的省份使用不同的图标标注计划完成情况&#xff0c;绿色图…

PS CS6视频剪辑基本技巧(一)CS6可以实现的视频剪辑功能

前几天儿子要做一个居家生活的视频在班会上分享&#xff0c;想把视频做得漂亮一些&#xff0c;不想应付了事&#xff0c;本人略懂PS&#xff0c;所以就地取材学了一下用PS CS6制作视频&#xff0c;现在把学习到的基本技巧给大家分享一下。本人非专业人士&#xff0c;所用软件也…

Arthas入门和安装使用

闲聊 我前几天也阳了&#xff0c;难受的要死&#xff0c; 不过今天明显好转&#xff0c;抓紧来一篇博文助助兴。如果对你有一点收获&#xff0c;辛苦点个赞。 简介 Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持JDK6以上。主要用于定位和诊断线上程序运行问…

Solidity之abi.encode各编码方法使用

什么是智能合约 ABI ABI Specification for encoding and decoding 非常精炼的一句话&#xff1a;一套用来编码和解码的规范。 注意与合约字节码&#xff08;bytecode&#xff09;要区分开&#xff0c;字节码只是一串用十六进制数表示的 EVM 操作码。 在 Solidity 文档中描…

文件内容的读写 (IO) —— 数据流

文件内容的读写 IO —— 数据流一、什么是数据流二、字节流输入InputStream2.1 InputStream 概述2.2 FileInputStream 的使用三、字节流输出OutputStream3.1 OutputStream 概述3.2 FileOutputStream 的使用四、字符流输入 Reader4.1 Reader 与 FileReader4.2 利用 Scanner 进行…

[Java]图论进阶--最小生成树算法

专栏简介 :MySql数据库从入门到进阶. 题目来源:leetcode,牛客,剑指offer. 创作目标:记录学习MySql学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1. 最小生成树 1.1 Kruskal(克鲁斯卡尔) 算法 …

计算机毕设Python+Vue校园社团信息管理系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Teams app LukcyDraw 的升级之路

我已经有很长一段时间没有更新我的 Teams App&#xff1a;LuckyDraw 了&#xff0c;有很多用户反馈给我&#xff0c;因为快到圣诞&#xff0c;新年和春节了&#xff0c;很多公司都开始要使用LuckyDraw来搞抽奖活动&#xff0c;希望LuckyDraw能支持大用户量的抽奖&#xff0c;所…

当打造一款极速湖分析产品时,我们在想些什么

作者&#xff1a;王有卓&#xff0c;StarRocks Contributor 随着开源数据湖技术的快速发展以及湖仓一体全新架构的提出&#xff0c;传统数据湖在事务处理、流式计算以及数据科学场景的限制逐渐得以优化解决。 为了满足用户对数据湖探索分析的需求&#xff0c;StarRocks 在 2.…

jsp+ssm计算机毕业设计ssm实验教学资源管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

【linux】linux实操篇之进程管理

目录前言进程介绍和查询进程基本介绍显示系统执行的进程终止进程服务管理监控服务动态监控进程监控网络状态结语前言 本篇博客总结linux中的进程管理相关知识&#xff0c;主要有进程介绍&#xff0c;终止进程&#xff0c;服务管理以及监控服务&#xff0c;一起来看看吧&#x…

模拟电路设计(40)---你真的懂“接地”吗?

概念 接地是指将一个电路、设备乃至分系统与一个基准“地”电位连接的电气要求&#xff0c;目的在于提供一个等电位点或等电位面。接地可以接真正的大地&#xff0c;也可以不接&#xff0c;例如飞机上的电子电气设备接飞机机壳就是接地。 接地必须有接地导体和接地平面才能够…

ChatGPT和InstructGPT 对比,ChatGPT将改变世界,影响力不亚于2007年新一代iPhone智能手机的发布

ChatGPT ChatGPT 的模型&#xff0c;它以对话方式进行交互。对话格式使 ChatGPT 可以回答后续问题、承认错误、挑战不正确的前提并拒绝不适当的请求。ChatGPT 是InstructGPT的兄弟模型&#xff0c;它经过训练可以按照提示中的说明进行操作并提供详细的响应。 ChatGPT 网址&am…

vue打包优化一

webpack.dll.config.js配置 相关文章 https://www.cnblogs.com/echoyya/p/16413591.html 步骤一&#xff1a;创建webpack.dll.config.js&#xff08;不一定要是这个名字&#xff0c;只要执行指令的时候路径正确就行&#xff09; // webpack.dll.config.js const path requi…

FIX:FusionCharts Suite XT 3.19.x

FusionCharts Suite XT&#xff1a;探索 100 多张图表和 2000 多张地图 FusionCharts 提供了 100 多张图表和 2000 多张地图。凭借广泛的文档、一致的 API 和一系列自定义选项 - FusionCharts 是最全面的 JavaScript 图表库&#xff0c;受到全球 750,000 名开发人员的喜爱。Fus…