DBScan табулирование результатов - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю над данными секвенирования и хочу использовать 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")

I Хотелось бы узнать, какие гены есть в каждом кластере, поэтому я бы манипулировал строкой "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

, но с огромным количеством точек данных. Я думаю, мне было интересно, можно ли сопоставить эти сгенерированные данные с именами генов.

РЕДАКТИРОВАТЬ: Я думаю, что я решил свою проблему с помощью Майкла Хаслера. Я экспортировал результаты dbscan как целое число, а затем добавил новый столбец в мой исходный кадр данных. Похоже, что он совпадает с результатами данных.

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

Извиняюсь, это действительно простое решение, но я новичок!

Спасибо за помощь!

1 Ответ

0 голосов
/ 27 апреля 2020

Из документации ? 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
...