-from sklearn.cluster import DBSCAN
-from sklearn import metrics
-import matplotlib.cm as cm
-import numpy as np
-import matplotlib.pyplot as plt
-
-# Create a subplot with 1 row and 2 columns
-fig, (ax2) = plt.subplots(1, 1)
-fig.set_size_inches(7, 7)
-
-# Read from file
-# TODO: Just change the following path and filename
-# when needed to read from a different file
-path = "/scratch/July-2018/Pairs2/"
-# TODO: Change the order of the files below to generate
-# the diff plot reversedly
-device1 = "dlink-siren-device-off"
-device2 = "dlink-siren-device-on"
-filename1 = device1 + ".txt"
-filename2 = device2 + ".txt"
-plt.ylim(0, 2000)
-plt.xlim(0, 2000)
-
-# Number of triggers
-trig = 50
-
-# PLOTTING FOR DEVICE ON EVENT
-# Read and create an array of pairs
-with open(path + filename1, "r") as pairs:
- pairsArr1 = list()
- for line in pairs:
- # We will see a pair and we need to split it into xpoint and ypoint
- xpoint, ypoint = line.split(", ")
- pair = [int(xpoint), int(ypoint)]
- pairsArr1.append(pair)
-
-# PLOTTING FOR DEVICE ON EVENT
-# Read and create an array of pairs
-with open(path + filename2, "r") as pairs:
- pairsArr2 = list()
- for line in pairs:
- # We will see a pair and we need to split it into xpoint and ypoint
- xpoint, ypoint = line.split(", ")
- pair = [int(xpoint), int(ypoint)]
- pairsArr2.append(pair)
-
-diff12 = [i for i in pairsArr1 if i not in pairsArr2]
-
-X = np.array(diff12);
-
-# Compute DBSCAN
-# eps = distances
-# min_samples = minimum number of members of a cluster
-db = DBSCAN(eps=10, min_samples=trig - 45).fit(X)
-core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
-core_samples_mask[db.core_sample_indices_] = True
-labels = db.labels_
-
-# Number of clusters in labels, ignoring noise if present.
-n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
-
-# Black removed and is used for noise instead.
-unique_labels = set(labels)
-
-colors = [plt.cm.Spectral(each)
- for each in np.linspace(0, 1, len(unique_labels))]
-for k, col in zip(unique_labels, colors):
- cluster_col = [1, 0, 0, 1]
- if k == -1:
- # Black used for noise.
- col = [0, 0, 0, 1]
-
- class_member_mask = (labels == k)
-
- # print("Unique label: " + str(k) + " with freq: " + str(labels.tolist().count(k)))
- xy = X[class_member_mask & core_samples_mask]
- plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(cluster_col),
- markeredgecolor='k', markersize=10)
-
- xy = X[class_member_mask & ~core_samples_mask]
- plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
- markeredgecolor='k', markersize=6)
-
-count = 0
-for pair in diff12:
- if labels[count] == -1:
- plt.text(pair[0], pair[1], str(pair[0]) + ", " + str(pair[1]), fontsize=10)
- else:
- # Only print the frequency when this is a real cluster
- plt.text(pair[0], pair[1], str(pair[0]) + ", " + str(pair[1]) +
- " - Freq:" + str(labels.tolist().count(labels[count])), fontsize=10)
- count = count + 1
-
-plt.title(device1 + ' - diff - ' + device2)
-plt.show()
-
-