public void DBScan(List<GeneExpression> geneSet, double eps, int minPts) {
		int index = 0;
		List<Integer> gene_id = new ArrayList<Integer>();
		for(int i = 0; i < geneSet.size(); i++)
			gene_id.add(geneSet.get(i).getId());
		int num_clusters = 0;
		while(geneSet.size() > index) {
			int ID = gene_id.get(index);
			if(!visitedList.contains(ID)) {
				visitedList.add(ID);
				
				ArrayList<Integer> neighborList = getNeighbors(geneSet, gene_id, ID, eps);
				
				if(neighborList.size() >= minPts) {
					int index2 = 0;
					ArrayList<Integer> clusters = new ArrayList<Integer>();
					clusters.add(ID);
					num_clusters++;
					gene_cluster_dbscan.put(ID,num_clusters);
					for(index2 = 0; index2 < neighborList.size(); index2++){
						int neighbor_id = neighborList.get(index2);
						if(!visitedList.contains(neighbor_id)){
							visitedList.add(neighbor_id);
							
							ArrayList<Integer> neighbors2 = getNeighbors(geneSet, gene_id, neighbor_id,eps);
							
							if (neighbors2.size() >= minPts){
								if(!gene_cluster_dbscan.containsKey(neighbor_id)) {
									gene_cluster_dbscan.put(neighbor_id,num_clusters);
									clusters.add(neighbor_id);
								}
							}
						}
					}
					if(clusters.size() > 0)
						clusterList.add(clusters);
				}
				else 
					gene_cluster_dbscan.put(ID, -1);
			}
			index++;
		}
	}