DBScan制表结果

问题描述 投票:0回答:1

我正在研究测序数据,我希望使用DBscan来使用等位基因频率参数创建聚类,基本上是基因突变发生的0-100%。我正在比较每个病人的两个时间点,这给了我x和y参数。我已经玩了一下eps和minPts的值,这很好,但我的问题是我得到的数据的表格。

所以我想知道哪些基因在程序创建的簇中。我看了一下DBscan的文档,似乎在任何地方都找不到相关的代码。说起来,我对R的使用完全是个外行,所以我可能漏掉了一些很简单的东西。

我使用的是 "dbscan "包,这是我运行的程序。

#Curating df to have relevant columns plus gene names, and transforming to matrix
dbscanplot.1 <- Curated.1 %>% select(Gene.Symbol.y, Diag.Allele.Fraction, Rel.Allele.Fraction)

#removing gene names to create matrix
dbscanplotMATRIX.1 <- as.matrix(dbscanplot.1[,2:3])

#running dbscan
kNNdistplot(dbscanplotMATRIX.1, k = 5)
abline(h=5, col = "red", lty=2)

pairs(dbscanplotMATRIX.1, col = res$cluster + 1L)

fr <- frNN(dbscanplotMATRIX.1, eps = 1.3)
dbscan(fr, minPts = 3)

#plotting data
plot(dbscanplotMATRIX.1, col=res$cluster)
points(dbscanplotMATRIX.1[res$cluster==0,], pch = 3, col = "grey")

我想知道每个簇中的基因是什么,所以我会操纵 "dbscan(fr, minPts = 3)" 线?

我试过了 db$cluster 如前文建议,但由于分析的数据点有一千多个,产生的数据很混乱。

一个例子是 [1] 0 1 2 3 0 4 0 0 2 2 2 5 2 2 2 0 2 0 1 0 4 0 4 2 4 4 2 2 0 2 0 4 2 4 4 6 7 4

但有大量的数据点, 我想我是想知道能不能把这个生成的数据和基因名进行匹配。

EDIT:我想在Michael Hasler的帮助下,我已经解决了我的问题。我把dbscan结果导出为一个整数,然后把新的列添加到我的原始数据框架中。它似乎与数据框架的结果一致。

clusters<-res$cluster
dbscanplot.1["Cluster"] <- clusters

很抱歉,这是一个非常简单的解决方案,但我是一个完全的新手!

谢谢您的帮助

r dbscan
1个回答
0
投票

从文档中可以看到 ? dbscan:

 Value:

 An object of class 'dbscan_fast' with the following components:
   eps : value of the eps parameter.
   minPts : value of the minPts parameter.
   cluster : A integer vector with cluster assignments. Zero indicates
      noise points.

因此,你可以在你的代码中获得集群分配。

db <-dbscan(fr, minPts = 3)
db$cluster
© www.soinside.com 2019 - 2024. All rights reserved.