首先,先講下需要解決的問題:
問題:挑選出了一條染色體上的一些gene位點,用dbscan演算法檢查下這些基因在位置上有沒有聚集。
輸入檔案:(id,start,end)
gene0001 1 1323
gene0002 1483 2619
gene0003 2580 4889
gene0009 14089 14664
ps:基因已按照起始位置排序
dbscan核心思想:如果乙個點,在距它
eps的範圍內有不少於
minpts
個點,則該點就是核心點。核心和它
eps範圍內的鄰居形成乙個簇。在乙個簇內如果出現多個點都是核心點,則以這些核心點為中心的簇要合併。
r**實現:
args
datoutfile
diselse if (left =n)
else
}region_cluster
else}}
return(region);
}gene_dis
for (i in 1:nrow(dat))
}result
rownames(result)
colnames(result)
if ( max(result$cluster)>0 )
outcolnames(out)
rownames(out)
write.table(out,outfile,quote=f, col.names = na,sep="\t")
}else
輸出格式:
start end
region1 11111 12000
region2 12001 120002
dbscan已有r包,寫的**沒有卵用,但還是祭奠下~~~
DBSCAN聚類演算法的實現
設有n個樣本,樣本為p維,1 計算距離矩陣d,時間複雜度為o n n p 2 對距離矩陣的每一行進行從小到大排序,得到sd sorted d 時間複雜度為o n n log n 3 根據eps與minpts,標註核心點 邊界點和雜訊點。首先比較sd minpts 與eps的大小,若前者小於後者,則為...
DBSCAN聚類演算法Python實現
dbscan是一種基於密度的聚類演算法,這類密度聚類演算法一般假定類別可以通過樣本分佈的緊密程度決定。同一類別的樣本,他們之間的緊密相連的,也就是說,在該類別任意樣本周圍不遠處一定有同類別的樣本存在。通過將緊密相連的樣本劃為一類,這樣就得到了乙個聚類類別。通過將所有各組緊密相連的樣本劃為各個不同的類...
聚類演算法 DBSCAN
dbscan 是一種簡單的,基於密度的聚類演算法。本次實現中,dbscan 使用了基於中心的方法。在基於中心的方法中,每個資料點的密度通過對以該點為中心以邊長為 2 eps 的網格 鄰域 內的其他資料點的個數來度量。根據資料點的密度分為三類點 1 核心點 該點在鄰域內的密度超過給定的閥值 minps...