社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python实战:学习生信大牛Sarah A. Teichmann发在Science上的单细胞分析

生信技能树 • 1 年前 • 434 次点击  

python也学了一段时间了,现在找一下教程做一些代码训练实战,今天分享的就是来自2020年2月21号发表在Science杂志上的一个资源,文献标题为《A cell atlas of human thymic development defines T cell repertoire formation》。

以前也有一篇完整的python版本实战:

在这篇Science杂志的文献中,作者利用单细胞RNA测序技术,创建了一个涵盖一生的人类胸腺的全面图谱,并为人类T细胞发育提供了新的见解:包括CD8αα⁺ T细胞、成纤维细胞亚型和激活的树突状细胞,并发现TCR重排和选择存在偏向性,与基因组位置和谱系承诺动力学相关。这些发现为理解人类T细胞发育提供了新的视角和全面的胸腺图谱。

这篇文献的通讯作者Sarah A. Teichmann也是生信届的大牛,介绍见:【生信进阶之路】盘点生物信息大牛课题组 EP16:Sarah A. Teichmann

Sarah教授是人类细胞图谱(the Human Cell Atlas,HCA)国际联盟的联合创始人和主要负责人。

人类胸腺单细胞图谱

本研究对15个胎儿胸腺样本(胎龄7-17孕周)和9个出生后样本进行了单细胞RNA测序。通过基于CD45、CD3或EpCAM的细胞分选,研究者分析了胸腺细胞和非胸腺细胞的转录组,并结合了T细胞受体αβ(TCRαβ)分析。经过质量控制后,共获得255,901个细胞数据。研究还对同一供体的其他相关器官进行了分析,并使用BBKNN算法结合线性回归进行了批次校正,以确保数据的准确性和可比性。

图谱:

人类胸腺细胞组成的UMAP可视化,按细胞类型着色(DN,双阴性T细胞;DP,双阳性T细胞;ETP,早期胸腺祖细胞;aDC,激活的树突状细胞;pDC,浆细胞样树突状细胞;Mono,单核细胞;Mac,巨噬细胞;Mgk,巨核细胞;Endo,内皮细胞;VSMC,血管平滑肌细胞;Fb,成纤维细胞;Ery,红细胞)。

(E) 胸腺基质细胞类型中标志基因表达的点图。

(G) 不同年龄组中细胞类型的相对比例。

数据集还涵盖了构成胸腺微环境的多种非免疫细胞类型。进一步将它们分类为亚型,包括胸腺上皮细胞(TECs)、成纤维细胞、血管平滑肌细胞(VSMCs)、内皮细胞和淋巴内皮细胞(图1E)。

胸腺成纤维细胞被进一步划分为两个之前未被描述过的亚型:

  • 成纤维细胞1型(Fb1)细胞(标志基因COLEC11、C7、GDF10),Fb1细胞独特地表达COLEC11,该基因在先天免疫中发挥重要作用(27),以及ALDH1A2,这是一种负责产生调节上皮细胞生长的视黄酸的酶(28)。
  • 成纤维细胞2型(Fb2)细胞(标志基因PI16、FN1、FBN1)(图1E)。相比之下,调节血管发育的细胞外基质(ECM)基因和sema基因则特异性地在Fb2中被检测到(图S3A)。
  • smFISH显示,Fb1细胞位于小叶周围(perilobular),而Fb2细胞则位于小叶之间(interlobular),并且常常与由VSMCs衬里的大血管相关联,这与其转录组中调节血管发育的基因特征一致。

数据下载与简单探索

数据可以在这里下载:

格式为h5ad:https://developmental.cellatlas.io/thymus-development

其他地方:ArrayExpress (accession number E-MTAB-8581)

分析代码:Zenodo repository (DOI: 10.5281/zenodo.3572422),以这里为主,数据和代码都有,看清楚有好几个版本,下载最新的那个版本

代码在这里也可以下载到:https://github.com/Teichlab/thymusatlas

数据下载比较麻烦一点,我这里还折腾了一下,可以加我微信发给你:Biotree123,下载下来的数据:

HTA08_v01_A05_Science_human_epi.h5ad
HTA08_v01_A05_Science_human_fig1.h5ad
HTA08_v01_A05_Science_human_hsc.h5ad
HTA08_v01_A06_Science_human_tcells.h5ad
HTA08_v02_A04_Science_mouse_stromal.h5ad
HTA08_v02_A04_Science_mouse_total.h5ad

数据分析中作者开发了一个包,在这里可以找到:https://github.com/jepark87/scjp

数据对应情况:

fig1_data = 'HTA08.v01.A05.Science_human_fig1.h5ad'
hsc_data = 'HTA08.v01.A05.Science_human_hsc.h5ad'
tcell_data = 'HTA08.v01.A06.Science_human_tcells.h5ad'
human_epi_data = 'HTA08.v01.A05.Science_human_epi.h5ad'
mouse_stromal_data = 'HTA08.v02.A04.Science_mouse_stromal.h5ad'
mouse_total_data = 'HTA08.v02.A04.Science_mouse_total.h5ad'

读取Load thymus data (corresponds to Fig 1C) 进来看一下:

#import scanpy.api as sc
import scanpy as sc
sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=100, color_map='OrRd')
sc.logging.print_version_and_date()

# 读取数据
fig1 = sc.read('HTA08.v01.A05.Science_human_fig1.h5ad')
fig1

样本相关的表型信息:

fig1.obs.head()

可视化fig1c的注释结果:

sc.pl.umap(fig1,color = 'Anno_level_fig1'.split(','))

按照年龄分组上色:

sc.pl.umap(fig1,color = 'Age'.split(','))

按照marker分选上色:

sc.pl.umap(fig1,color = 'sort'.split(','))

今天分享到这,去试试看~

文末友情宣传

强烈建议你推荐给身边的博士后以及年轻生物学PI,多一点数据认知,让他们的科研上一个台阶:


    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/184412