#!/usr/bin/env python3 match_wifi_num_crit = 2 def cosine_sim(known_point, new_point): from math import sqrt up, d1, d2 = 0.0, 0.0, 0.0 a, b = known_point, new_point for key in a.wifi_snr: d1 += a.wifi_snr[key] * a.wifi_snr[key] if key in b.wifi_snr: up += a.wifi_snr[key] * b.wifi_snr[key] for key in b.wifi_snr: d2 += b.wifi_snr[key] * b.wifi_snr[key] if up < match_wifi_num_crit: return None else: return up / sqrt(d1) / sqrt(d2) if __name__ == '__main__': from wifiloc import toplev toplev(infile = "basicdata.csv", sim = cosine_sim, bad_wifi_crit = 5000, sim_crit = 0.0)