搜索文献,发现一篇非常好的单细胞和空间转录组学联合分析的好文章,带有全套复现代码。从今天开始,我们就来系统学习一下。文章的题目是:Single cell and spatial transcriptomics highlight the interaction of club-like cells with immunosuppressive myeloid cells in prostate cancer。代码托管在 Github:https://github.com/akiviaho/ST-prostate
文章的主要内容前面已经作了简要介绍:
全套复现代码 | 单细胞和空间转录组学,揭示前列腺癌耐药性的新驱动因素
本研究揭示了棒状细胞导致的前列腺癌耐药恶性循环,如下图所示:
如果你对这篇文章的复现感兴趣,可以加我微信:usegalaxy,拉你入群一块交流。
我们先来看一下文章用到的主要数据。
文章数据
该研究涉及空间转录组(ST)、单细胞转录组(scRNA-seq)参考集及外部验证数据。
1. 空间转录组数据 (ST):
◦ 发现队列:包含 80 个新鲜冷冻组织切片(来自 56 名患者),涵盖良性(BPH)、初治(TRNA)、新辅助治疗(NEADT)和去势抵抗(CRPC)阶段。数据已上传至 GEO,登录号为 GSE278936。
◦ 验证队列:来自 8 名初治患者的 32 个切片。数据存储在 EGA,登录号为 EGAD50000000603。
◦ 转移癌数据:包含 4 个转移灶样本(盆腔淋巴结、肝、心包、硬脑膜)。2. 单细胞参考图谱 (scRNA-seq Reference):
◦ 研究整合了多项已发表的数据集(共 98 个样本、64 名患者、223,881 个细胞)来定义 26 种细胞状态。
◦ GEO 登录号:GSE137829, GSE141445, GSE176031, GSE185344, GSE181294;以及 SRA: PRJNA699369 和 Broad Institute 研究 SCP1244。3. 外部 Bulk 验证数据:
◦ TCGA-PRAD 和 SU2C-PCF (mCRPC) 队列
数据预处理
import numpy as np import pandas as pd import scanpy as sc import anndata as ad from pathlib import Path import glob import warnings warnings.filterwarnings('ignore') import os os.chdir('/pub/sci-paper/2024_spatial_prostate')Formatting Dong et al. 2020 data
我们先下载 dong_2020 参考数据,GEO 编号:GSE137829。需要注意的是,这个数据的 Series Matrix File(s) 文件中只有注释信息,而表达数据存在于补充文件 GSE137829_RAW.tar。解压后,得到 6 个.txt 文件:
galaxy@galaxy:/pub/sci-paper/2024_spatial_prostate/sc-reference/dong_2020$ ll -lsh *.txt 179M -rw-rw-r-- 1 galaxy galaxy 179M Sep 23 2019 GSM4089151_P1_gene_cell_exprs_table.txt 63M -rw-rw-r-- 1 galaxy galaxy 63M Sep 23 2019 GSM4089152_P2_gene_cell_exprs_table.txt 68M -rw-rw-r-- 1 galaxy galaxy 68M Sep 23 2019 GSM4089153_P3_gene_cell_exprs_table.txt 72M -rw-rw-r-- 1 galaxy galaxy 72M Sep 23 2019 GSM4089154_P4_gene_cell_exprs_table.txt 469M -rw-rw-r-- 1 galaxy galaxy 469M Aug 5 2020 GSM4711414_P5_gene_cell_exprs_table.txt 436M -rw-rw-r-- 1 galaxy galaxy 436M Aug 5 2020 GSM4711415_P6_gene_cell_exprs_table.txt接着从文章的附件中下载注释文件:
wget https://static-content.springer.com/esm/art%3A10.1038%2Fs42003-020-01476-1/MediaObjects/42003_2020_1476_MOESM4_ESM.xlsx稍加整理后开始合并样本数据(代码有适当调整):
import numpy as np import pandas as pd import scanpy as sc import anndata as ad from pathlib import Path import glob import warnings warnings.filterwarnings('ignore') import os os.chdir('/pub/sci-paper/2024_spatial_prostate') # Formatting Dong et al. 2020 data sc_files = glob.glob('sc-reference/dong_2020/*txt') dong_annot = pd.read_csv('sc-reference/dong_2020/dong_2020_annot.csv',sep=',',index_col=0) dong_annot = dong_annot.rename(columns={'CellType':'celltype_orig'}) # Download the files into a list and concatenate together adata_list = [] for file in sc_files: s_abbr = '_'.join(file.split('/')[2].split('_')[0:2]) df = pd.read_csv(file, sep='\t', index_col=1) df = df.iloc[:, 1:] adata = ad.AnnData(df.T) #### ADDING METADATA #### adata.obs_names = s_abbr + '_' + adata.obs_names meta = adata.obs.copy() meta['sample'] = s_abbr meta['patient'] = s_abbr meta = meta.merge(dong_annot,how='left',left_index=True,right_index=True) meta['phenotype'] = 'CRPC' meta['dataset'] = 'dong_2020' adata.obs = meta.copy() ########## adata.obs_names_make_unique() # Since the genes were originally named with ENSEMBL ID, we have to make them unique. adata.var_names_make_unique() adata_list.append(adata) adata_concat = ad.concat(adata_list, join='outer', fill_value=0) adata_concat.obs adata_concat.write('sc-reference/dong_2020/adata_obj.h5ad')好了,我们今天先整理到这里,明天见~
推荐阅读
中国银河生信云平台(UseGalaxy.cn)致力于零代码生信分析。平台拥有海量计算资源、3000 多个生信工具和数十条生信流程,并且为用户提供 200G 免费存储空间。进群交流请先加 usegalaxy 为好友。我们还为进阶用户提供高质量培训课程:
RNA-seq数据分析实战 | 2026年第1期,开启你的生信学习之旅