nature级别图表:单细胞转录组细胞比例统计可视化函数

文章介绍了如何使用修改后的R函数方便地进行单细胞转录组数据的细胞比例计算和可视化,特别是针对多样本间的统计比较。该函数适用于不同数据集,要求元数据中细胞类型列名为celltype且orig.ident包含分组信息。函数支持柱状图和统计散点图的绘制,并能灵活调整颜色、形状和标签等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单细胞转录组细胞比例:

关于单细胞比例的计算和作图我们之前出过3期,单细胞比例的展示是很多单细胞文章必不可少的内容:
跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化
相信跟着学习的小伙伴已经掌握了。最近学习一篇《nature medicine》的文章,标题是:A single-cell atlas of the peripheral immune response in patients with severe COVID-19。单细胞比例的展示可以是柱状图,也可以是统计散点图。而当你是多样本,尤其是类似于这篇NM的文章,需要与对照相比统计的时候,使用统计检验的三点图就相当重要了(跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化)。 可是有一个问题,就是每当你要进行一个数据集的统计的时候,都要修改很多参数,很麻烦,有时候还不一定正确。这篇NM中提供了一种函数,但是只适用于这篇文章的数据集,群主对函数进行了修改再造,将其改成了一个适用于普遍数据集的函数,也算是半原创吧!以后作图只需要调用函数即可,修改一两个参数!

前面虽说这个函数是通用型的,但是有两个条件,第一个是你的metadata中细胞类型那一列的列名需要是celltype,一般人在分析的时候应该都是这样命名的,但是总是有特殊的,所以在函数中我也注明了需要按照自己习惯修改的地方。第二个是orig.ident需要有一个对应的group,也就是样本分组,orig.ident就相当于重复。 将函数放在一个文件夹,可以专门建立一个,source加载函数:

library(Seurat)
library(dplyr)
library(reshape2)
library(plyr)
library(ggplot2)
setwd("D:/KS项目/公众号文章/单细胞比例统计函数")
source("./Singlecellratio_plotstat.R")
my_comparisons <- list(c("BM", "GM"))#我这里只有两组,如果是多组,这里设置相互比较对

先做一个柱状图,柱状图的参数是color.by=”cell.type“,这是固定的。这里细胞类型的颜色我是固定了的,设置了有20几种颜色,如果你自己需要修改,只需要在后面加sacle_fill_manual函数修改即可。scedata是定好细胞群的单细胞seurat对象。


Singlecellratio_plotstat(scedata, group_by = "group",
                         meta.include = c("group","orig.ident"),
                         color_by = 'cell.type')

将color.by参数设置为group,增加comparisons参数(比较设置),group_by.point设置为orig.ident, label.x = 1, pt.size = 3(点大小),label有两种选择,p.signif是显示*,p.format显示p值。ncol是显示的散点箱线图的排列行数,可自行设置数目。同样的,分组颜色我默认设置了6种,如果需要修改,在后面+sacle_color_manual函数修改。

Singlecellratio_plotstat(scedata, group_by = "group",
                         meta.include = c("group","orig.ident"),
                         comparisons = my_comparisons, color_by = 'group',
                         group_by.point = "orig.ident",label.x = 1, pt.size = 3,
                         label = 'p.format', ncol =3)

其他参数不变,我们将color.by参数设置orig.ident,因为我设置默认颜色是渐变的,所以每一组每个样本的颜色都有区别,但是分组却是可以看出来的,这样图更生动。同样的,只有6种颜色,样本多余6个后在后面+sacle_color_manual函数修改。

Singlecellratio_plotstat(scedata, group_by = "group",

最后,分组的点形状也是可以变化的,只需要增加参数shape_by = 'group'即可完成。不过我觉得有颜色区分了,这个意义不大了。

Singlecellratio_plotstat(scedata, group_by = "group",
                         meta.include = c("group","orig.ident"),
                         comparisons = my_comparisons, color_by = 'orig.ident',
                         group_by.point = "orig.ident",label.x = 1, pt.size = 3,
                         label = 'p.format', ncol =3)

这就是所有内容了,其实函数还可以进行很多修改,感兴趣的小伙伴可在此基础上继续完善。觉得小编内容有用的,点个赞,分享一下呗,看完不点赞是怎么个事呢!!!

### 处理和解析单细胞转录组表达矩阵TXT文件 #### 文件结构理解 通常情况下,单细胞转录组表达矩阵TXT文件由基因名作为行标签,样本ID作为列标签组成。每一行列出了特定基因在不同样品中的表达量。 #### 数据加载与初步查看 为了有效处理这类数据,在Python环境中推荐使用`pandas`库来读取并操作这些表格型的数据集: ```python import pandas as pd # 加载表达矩阵文件 expression_matrix = pd.read_csv('path_to_file.txt', sep='\t') # 查看前几行以了解数据格式 print(expression_matrix.head()) ``` 此代码片段用于导入指定路径下的`.txt`文件,并将其转换为Pandas DataFrame对象以便后续分析[^3]。 #### 特征选择 (Feature Selection) 对于高维度的单细胞RNA-seq数据来说,特征选择是非常重要的一步。这可以通过识别高度可变基因(Highly Variable Genes, HVGs)或其他方法完成: ```python from sklearn.feature_selection import VarianceThreshold selector = VarianceThreshold(threshold=(.8 * (1 - .8))) selected_features = selector.fit_transform(expression_matrix) filtered_expression_matrix = expression_matrix.loc[:, selector.get_support()] ``` 这段脚本实现了基于方差阈值的选择器去除低变异性的特征。 #### 维度降低 (Dimensionality Reduction) 当面对庞大的基因列表时,降维技术可以帮助简化模型复杂性和提高可视化效果。常用的技术包括主成分分析(Principal Component Analysis, PCA),t分布随机邻居嵌入(t-Distributed Stochastic Neighbor Embedding, t-SNE), 和扩散映射(Diffusion Maps): ```python from sklearn.decomposition import PCA pca = PCA(n_components=50) reduced_data = pca.fit_transform(filtered_expression_matrix.T) explained_variance_ratio = sum(pca.explained_variance_ratio_) print(f'Explained variance ratio by top 50 PCs: {explained_variance_ratio:.2f}') ``` 这里展示了如何应用PCA减少至五十个主要分量,并评估所解释的比例。 #### 聚类分析 (Clustering) 最后一步是对经过预处理后的数据执行聚类算法,从而发现潜在的生物亚群。常用的聚类策略有K均值(K-Means Clustering)、密度峰值(DBSCAN)以及图论基础上的方法如Louvain社区检测法: ```python from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=7).fit(reduced_data) cluster_labels = kmeans.labels_ for i in range(len(cluster_labels)): print(f'Sample {i} belongs to cluster {cluster_labels[i]}') ``` 上述例子说明了利用K-means进行简单分类的过程。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值