# seen |= correctR if len(resultR) > 0: nonZeroCount += 1 extraCount += len(resultR - correctR) missingCount += len(correctR - resultR) # # print("{}/{} - {}".format(i, len(queryIsolates), isolate)) # print("{}/{} - {} - {}:{}".format(i+1, len(queryIsolates), isolate, len(resultR), len(correctR))) # # print("\t{} --- {} / {} : {} / {}".format(isolate, len(resultR - correctR), len(resultR), len(correctR - resultR), len(correctR))) if resultR == correctR: correctCount += 1 if len(resultR) > 0: nonZeroCorrectCount += 1 else: print("\t{} ----- {}".format([(extraIsolate, [isolate.regionDist(extraIsolate, region) for region in cfg.regions]) for extraIsolate in resultR - correctR], [(missingIsolate, [isolate.regionDist(missingIsolate, region) for region in cfg.regions]) for missingIsolate in correctR -resultR])) print("total correct: {}/{}".format(correctCount, queryCount)) print("nonEmpty correct: {}/{}".format(nonZeroCorrectCount, nonZeroCount)) print("total extra: {}, total missing: {}".format(extraCount, missingCount)) if __name__ == '__main__': cfg = config.loadConfig() isolates = pyroprinting.loadIsolates(cfg) index = SpatialIndex(isolates, cfg) correctNeighbors = fullsearch.getNeighborsMap(isolates, cfg) # testSpatial(isolates, index, correctNeighbors, cfg) cProfile.run("testSpatial(isolates, index, correctNeighbors, cfg)")
def computeDBscanClusters(isolates, cfg): print("clustering for a subset of size {}...".format(cfg.isolateSubsetSize)) correctNeighbors = fullsearch.getNeighborsMap(isolates, cfg) precomputedSearcher = fullsearch.PrecomputedIndex(correctNeighbors) return dbscan(precomputedSearcher, cfg.radii, cfg.minNeighbors)