基于数值聚类生物序列

时间:2018-02-22 18:40:05

标签: r bigdata cluster-analysis

我试图根据Atchley因子(代表每种氨基酸的5个数字)将几个固定长度(13)的氨基酸序列聚类成K簇。

例如,我有一个字符串的输入向量,如下所示:

  key <- HDMD::AAMetric.Atchley


sequences <- sapply(1:10000, function(x) paste(sapply(1:13, function (X) sample(rownames(key), 1)), collapse = ""))

然而,我的实际序列列表超过10 ^ 5(指定需要计算效率)。

然后我通过以下方法将这些序列转换为数字向量:

  key <- HDMD::AAMetric.Atchley

  m1 <- key[strsplit(paste(sequences, collapse = ""), "")[[1]], ]
  p = 13
  output <-
    do.call(cbind, lapply(1:p, function(i)
      m1[seq(i, nrow(m1), by = p), ]))

我想以有效的方式output(现在是65维向量)。

我最初使用的是迷你批次kmeans,但我注意到当我重复时结果非常不一致。我需要一致的聚类方法。

我也担心维度的诅咒,考虑到65维度,欧几里德距离不起作用。

我看到的许多高维聚类算法都假设数据中存在异常值和噪声,但由于这些是生物序列转换为数值,因此没有噪声或异常值。

除此之外,特征选择不起作用,因为每种氨基酸和每种氨基酸的每种性质都与生物学背景相关。

您如何推荐聚类这些载体?

1 个答案:

答案 0 :(得分:1)

我认为自组织地图在这方面可以提供帮助 - 至少实施速度非常快,所以如果有用的话你很快就会知道:

使用op中的数据以及:

rownames(output) <- 1:nrow(output)
colnames(output) <- make.names(colnames(output), unique = TRUE)

library(SOMbrero)

您预先定义群集的数量

fit <- trainSOM(x.data=output , dimension = c(5, 5), nb.save = 10, maxit = 2000, 
               scaling="none", radius.type = "gaussian")

nb.save用作进一步探索迭代过程中培训如何发展的中间步骤:

plot(fit, what ="energy")

enter image description here

似乎更多的迭代是按顺序

检查群集的频率:

table(my.som$clustering)
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25 
428 417 439 393 505 458 382 406 271 299 390 303 336 358 365 372 332 268 437 464 541 381 569 419 467 

根据新数据预测集群:

predict(my.som, output[1:20,])
#output
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
19 12 11  8  9  1 11 13 14  5 18  2 22 21 23 22  4 14 24 12 

检查哪些变量对群集很重要:

summary(fit)
#part of output
Summary

      Class :  somRes 

      Self-Organizing Map object...
         online learning, type: numeric 
         5 x 5 grid with square topology
         neighbourhood type: gaussian 
         distance type: euclidean 

      Final energy     : 44.93509 
      Topographic error: 0.0053 

      ANOVA                : 

        Degrees of freedom :  24 

             F     pvalue significativity
pah      1.343 0.12156074                
pss      1.300 0.14868987                
ms      16.401 0.00000000             ***
cc       1.695 0.01827619               *
ec      17.853 0.00000000             ***

找到最佳群集数量:

plot(superClass(fit))

enter image description here

fit1 <- superClass(fit, k = 4)

summary(fit1)
#part of output
SOM Super Classes
     Initial number of clusters :  25 
     Number of super clusters   :  4 


  Frequency table
1 2 3 4 
6 9 4 6 

  Clustering
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 
 1  1  2  2  2  1  1  2  2  2  1  1  2  2  2  3  3  4  4  4  3  3  4  4  4 


  ANOVA

        Degrees of freedom :  3 

              F     pvalue significativity
pah       1.393 0.24277933                
pss       3.071 0.02664661               *
ms       19.007 0.00000000             ***
cc        2.906 0.03332672               *
ec       23.103 0.00000000             ***

vignette

中还有更多内容