def test_local_moran(self): lisa = pygeoda.local_moran(self.queen_w, self.crm_prp, permutation_method="complete") lms = lisa.lisa_values() self.assertEqual(lms[0], 0.015431978309803657) self.assertEqual(lms[1], 0.3270633223656033) self.assertEqual(lms[2], 0.021295296214118884) pvals = lisa.lisa_pvalues() self.assertEqual(pvals[0], 0.41399999999999998) self.assertEqual(pvals[1], 0.123) self.assertEqual(pvals[2], 0.001) cvals = lisa.lisa_clusters() self.assertEqual(cvals[0], 0) self.assertEqual(cvals[1], 0) self.assertEqual(cvals[2], 1)
import matplotlib import matplotlib.pyplot as plt import geopandas # 输入shp文件 dataPath = argv[1] feild = argv[2] randomSed = int(argv[3]) filter = float(argv[4]) cpu=int(argv[5]) data = pygeoda.open(dataPath) queen_w = pygeoda.weights.queen(data) fieldCol = data.GetIntegerCol(feild) lisa = pygeoda.local_moran(queen_w, fieldCol) lisa.SetPermutations(randomSed) lisa.SetThreads(cpu) lisa.Run() lisa_colors = lisa.GetColors() lisa_labels = lisa.GetLabels() lisa_cluster = lisa.GetClusterIndicators() list_p_value = lisa.GetPValues() fig, ax = plt.subplots(figsize=(10, 10)) gdf = geopandas.read_file(dataPath)
def test_GetFDR(self): lm = pygeoda.local_moran(self.queen_w, self.crm_prp) p = lm.lisa_fdr(0.05) self.assertAlmostEqual(p, 0.000588235)
Usage: python3 perf_pygeoda.py FILE_PATH VARIABLE_NAME PERMUTATIONS PERMUTATION_METHOD CPU_THREADS python3 perf_pygeoda.py ./data/natregimes.shp HR60 999 brutal-force 1 python3 perf_pygeoda.py ./data/natregimes.shp HR60 999 lookup-table 8 """ data_path = sys.argv[1] var_name = sys.argv[2] perms = int(sys.argv[3]) perm_method = sys.argv[4] cpu_threads = int(sys.argv[5]) # prepare the data and weights dt = pygeoda.open(data_path) if data_path == './data/Chicago_parcels_points.shp': w = pygeoda.weights.knn_weights(dt, 10) else: w = pygeoda.weights.queen_weights(dt) x = dt.GetRealCol(var_name) # time it start_time = time.time() lisa = pygeoda.local_moran(w, x, permutations=perms, permutation_method=perm_method, cpu_threads=cpu_threads) run_time = time.time() - start_time print("{0} {1} {2} {3}: {4} seconds".format(data_path, perms, perm_method, cpu_threads, run_time))