在生物学中,聚类和亚群识别用于揭示生物数据中的模式和关系,如基因表达、细胞分类和疾病亚型。聚类方法通过分组相似的样本或基因,帮助研究人员发现生物系统中的共性和分类,如不同细胞类型或组织间的差异。亚群识别进一步细化这些群体,识别主要群体中的特定子集,如特定细胞亚群或肿瘤中不同突变类型。这对理解生物学复杂性、优化诊断和开发精准医疗方案具有关键作用。
Many perturbations only affect a subset of the cells | ViaDean
参考文献
在 MATLAB 中进行聚类和亚群识别可以使用一些内置函数和工具箱,如 Statistics and Machine Learning Toolbox 和 Bioinformatics Toolbox。以下是如何使用 MATLAB 进行聚类和亚群识别的详细步骤,尤其是用于检测和分析选择性扰动效应。
首先,需要导入数据并进行预处理。假设数据是一个表达矩阵,行是基因,列是样本。
% 导入表达数据
expressionData = readmatrix('expression_data.csv'); % 行表示基因,列表示样本
% 可选:导入样本的元数据(如扰动标签)
metadata = readtable('metadata.csv'); % 假设包含亚群和扰动标签
使用 zscore
进行标准化处理,并使用 PCA 或 t-SNE 进行降维,以便进行聚类。
% 对数据进行标准化
standardizedData = zscore(expressionData, 0, 2);
% 进行 PCA 降维
[coeff, score, ~] = pca(standardizedData');
% 使用前两个主成分进行可视化
figure;
scatter(score(:,1), score(:,2), 20, 'filled');
title('PCA Visualization of Samples');
xlabel('PC1');
ylabel('PC2');
可以使用 k-means 或 层次聚类 等方法对样本进行聚类。
% 使用 k-means 聚类
numClusters = 3; % 假设我们预期有 3 个亚群
[idx, C] = kmeans(score(:, 1:10), numClusters); % 使用前 10 个主成分
% 可视化聚类结果
figure;
gscatter(score(:,1), score(:,2), idx);
title('k-means Clustering of Samples');
xlabel('PC1');
ylabel('PC2');
层次聚类可以用于更详细的分析,尤其适用于树状图。
% 计算样本之间的欧几里得距离
distances = pdist(standardizedData');
% 进行层次聚类
linkageTree = linkage(distances, 'ward');
% 绘制树状图
figure;
dendrogram(linkageTree, 0);
title('Hierarchical Clustering Dendrogram');
根据聚类结果,将样本分配到不同的亚群,并使用元数据进行标注和扰动效应分析。
% 将聚类结果添加到元数据中
metadata.Cluster = idx;
% 使用散点图查看扰动效应在亚群中的分布
figure;
scatter(score(:,1), score(:,2), 20, metadata.Perturbation, 'filled');
title('Perturbation Distribution Across Clusters');
xlabel('PC1');
ylabel('PC2');