背景:We developed a cell-cycle scoring approach that uses expression data to compute an index for every cell that scores the cell according to its expression of cell-cycle genes. In brief, our approach proceeded through four steps. (A) We reduced dimensionality of the dataset to the cell-cycle relevant genes. (B) In this subspace we performed, as a first approximation, a simple K-means clustering to separate non cycling from cycling cells and (C) we used this clustering as a reference to learn a function that takes the gene expression as the input and returns a cell-cycle score as an output. (D) We used this function to calculate a score for each single cell.
数据是每个细胞的基因表达矩阵,需求是根据基因表达信息计算每一个细胞的增殖指数(依据是细胞周期基因)。
我们常规能想到的就是建立一个线性模型,每一个细胞周期基因当做一个变量,输出一个数值,就是增殖指数,然后正则化到0~1.
问题是这样的话,每个基因前面的系数怎么确定?所以建议一个简单的方程是不可行的,我们必须要做有监督学习模型。那么有监督的数据怎么来呢?我们的数据没有lable啊。
下面就是文章中的方法:
我们需要计算增殖指数的数据没有lable,那我们就手动为其建立lable。
通过简单的kmeans聚类,我们就可以筛选出增殖指数高的细胞类群,以此为训练集,来构建监督学习模型。
然后用建好的模型再来对我们的数据进行预测,得到每一个细胞的增殖指数。
We started by selecting a wide selection of genes related to cell-cycle and proliferation. We used the PANTHER GO database and selected all the genes that were described by one of the following terms: DNA metabolic process, DNA replication, mitosis, regulation of cell cycle, cell cycle, cytokinesis, histone, DNA-directed DNA polymerase, DNA polymerase processivity factor, centromere DNAbinding protein. We restricted our features to those genes. Genes that were detected at less than 10 molecules in the dataset were removed. We calculated the pairwise correlation coefficient matrix, and selected the genes that were strongly correlated (99th percentile of the matrix) with at least 12 other genes. The genes passing the filters described above were used for clustering cells using K-means (Python scikit-learn implementation, on log-centered data, default parameters) with the rationale that the main axis of variation expected would span across dividing and non-dividing cells. Then a linear regression model with L1-norm regularization was fitted that used a learning function which took expression data of a cell and categorized into two classes, 1 when a cell belongs to the cycling cluster and 0 when it did not. Importantly, to avoid both overfitting the score on the first approximation clusters and also to obtain a more generalizable model, we used a strong regularization (5 times the one determined by cross-validation; alpha = 0.01).
This procedure was used for both the mouse and human embryonic dataset. The function learnt on the human embryonic dataset was also used to determine the proliferation index of the hPSCs.
当然文章的处理更加细心:
1. 首先从PANTHER GO数据库选出cell cycle相关的基因;
2. 计算了每个基因的相关性,去掉了独立存在的基因;
3. K-means聚类分三类,得到学习数据
4. linear regression model with L1-norm,为防止过拟合,参数设得比较严格。
这种方法从机器学习的角度给了一个大致的增殖指数,肯定不会错,但是应该也不会太准,但是用于比较不同细胞的增殖差异还是足够的。
如果想要ground truth,就必须要得到实验上更严格的数据来源,比如高度增殖的细胞和完全不增殖的细胞的基因表达数据。
代码:ipynb-lamanno2016-proliferation.ipynb
代码注释已经比较完善,后续会进行总结分析,并扩展延伸到其他应用上。
所以这种模型通用性还是比较强的。
比如拿细胞凋亡和细胞衰老相关的基因来计算每个细胞的衰老程度。
核心问题是如何选择出合适的gene list!对于有的指标很难选出合适的gene list。
原文地址:https://www.cnblogs.com/leezx/p/8623037.html