diff --git a/src/pg/sql/22_maxp.sql b/src/pg/sql/22_maxp.sql index e23ee12..6d17f2e 100644 --- a/src/pg/sql/22_maxp.sql +++ b/src/pg/sql/22_maxp.sql @@ -4,6 +4,7 @@ CREATE OR REPLACE FUNCTION CDB_MaxP( subquery TEXT, colnames TEXT[], + floor_variable TEXT, min_size int default 1, initial int default 99, geom_col TEXT DEFAULT 'the_geom', @@ -12,5 +13,5 @@ RETURNS TABLE (region_class text, p_val numeric, rowid bigint) AS $$ from crankshaft.clustering import MaxP maxp = MaxP() - return maxp.maxp(subquery, colnames, floor=min_size) + return maxp.maxp(subquery, colnames, floor_variable, floor=min_size) $$ LANGUAGE plpythonu; diff --git a/src/py/crankshaft/crankshaft/analysis_data_provider.py b/src/py/crankshaft/crankshaft/analysis_data_provider.py index ae141e8..951c4c9 100644 --- a/src/py/crankshaft/crankshaft/analysis_data_provider.py +++ b/src/py/crankshaft/crankshaft/analysis_data_provider.py @@ -67,7 +67,7 @@ class AnalysisDataProvider: plpy.error('Analysis failed: %s' % err) def get_maxp(self, params): - """fetch data for spatial markov""" + """fetch data for max-p""" try: query = pu.construct_neighbor_query('queen', params) data = plpy.execute(query) diff --git a/src/py/crankshaft/crankshaft/clustering/maxp.py b/src/py/crankshaft/crankshaft/clustering/maxp.py index c135369..93eedb5 100644 --- a/src/py/crankshaft/crankshaft/clustering/maxp.py +++ b/src/py/crankshaft/crankshaft/clustering/maxp.py @@ -5,6 +5,7 @@ import pysal as ps import numpy as np import random +import time import crankshaft.pysal_utils as pu from crankshaft.analysis_data_provider import AnalysisDataProvider @@ -17,16 +18,20 @@ class MaxP: else: self.data_provider = AnalysisDataProvider() - def maxp(self, subquery, colnames, floor=1, - geom_col='the_geom', id_col='cartodb_id'): + def maxp(self, subquery, colnames, floor_variable, + floor=1, + geom_col='the_geom', id_col='cartodb_id'): """ Inputs: @param subquery (text): subquery to expose the data need for the analysis. This query needs to expose all of the columns in `colnames`, `id_col`, and `geom_col` - @param colnames (list): list of column names (as strings) - @param floor (float): ... + @param colnames (list): list of column names (as strings). This is + used to calculate intra-regional homogeneity. + @param floor_variable (text): name of column variable for the floor + @param floor (int): the minimum bound for a variable that has to be + obtained in each region, @param geom_col (text): geometry column used for calculating the spatial neighborhood @param id_col (text): id column used for keeping the identity of @@ -39,23 +44,29 @@ class MaxP: params = {'subquery': subquery, 'colnames': colnames, 'id_col': id_col, - 'geom_col': geom_col} + 'geom_col': geom_col, + 'floor_variable':floor_variable, + } resp = self.data_provider.get_maxp(params) - attr_vals = pu.get_attributes(resp, len(colnames)) - + floor_column_id = colnames.index(floor_variable) + # print "floor_column_id: ", floor_column_id weight = pu.get_weight(resp, w_type='queen') + start_time = time.time() r = ps.Maxp(weight, attr_vals, floor=floor, - floor_variable=np.ones((weight.n, 1))) - + floor_variable= attr_vals.transpose()[floor_column_id], + initial=10) + # print r.regions cluster_classes = get_cluster_classes(weight.id_order, r.regions) r.inference() + # print "elapsed time: ", time.time() - start_time return zip(cluster_classes, [r.pvalue] * len(weight.id_order), weight.id_order) + def get_cluster_classes(ids, clusters): """ diff --git a/src/py/crankshaft/test/fixtures/maxp.json b/src/py/crankshaft/test/fixtures/maxp.json new file mode 100644 index 0000000..9bf4955 --- /dev/null +++ b/src/py/crankshaft/test/fixtures/maxp.json @@ -0,0 +1 @@ +{"rows":[{"id":209173,"attr1":4304,"attr2":70938,"neighbors":[209175,209176,209177,209181,209185]},{"id":209174,"attr1":1868,"attr2":34740,"neighbors":[209232,209234,209184,209233]},{"id":209175,"attr1":3985,"attr2":101544,"neighbors":[209173,209176,209178]},{"id":209176,"attr1":4759,"attr2":110700,"neighbors":[209173,209175,209177,209178]},{"id":209177,"attr1":2600,"attr2":91964,"neighbors":[209173,209176,209178,209179,209180,209181]},{"id":209178,"attr1":4029,"attr2":130966,"neighbors":[209175,209176,209177,209179,209201,209203,209204]},{"id":209179,"attr1":4162,"attr2":121083,"neighbors":[209177,209178,209180,209195,209199,209201]},{"id":209180,"attr1":967,"attr2":107946,"neighbors":[209177,209179,209181,209182,209195]},{"id":209181,"attr1":2562,"attr2":111500,"neighbors":[209173,209177,209180,209182,209185,209187]},{"id":209182,"attr1":5962,"attr2":90616,"neighbors":[209180,209181,209187,209190,209191,209195,209338,209188]},{"id":209184,"attr1":1368,"attr2":61023,"neighbors":[209232,209174,209229,209231,209186]},{"id":209185,"attr1":4295,"attr2":208036,"neighbors":[209173,209181,209187,209638]},{"id":209186,"attr1":4902,"attr2":36563,"neighbors":[209229,209184,209189,209224,209226,209227]},{"id":209187,"attr1":4342,"attr2":19066,"neighbors":[209181,209182,209185,209338,209638]},{"id":209188,"attr1":3532,"attr2":17544,"neighbors":[209182,209190,209314,209338]},{"id":209189,"attr1":1841,"attr2":68958,"neighbors":[209186,209192,209194,209222,209224]},{"id":209190,"attr1":2837,"attr2":69609,"neighbors":[209182,209191,209312,209314,209188,209310]},{"id":209191,"attr1":3157,"attr2":105642,"neighbors":[209182,209190,209195,209197,209193,209310]},{"id":209192,"attr1":3038,"attr2":69848,"neighbors":[209189,209194,209196]},{"id":209193,"attr1":1550,"attr2":61525,"neighbors":[209191,209195,209197,209262,209263,209308,209291,209310]},{"id":209194,"attr1":4457,"attr2":74449,"neighbors":[209189,209192,209196,209200,209220,209222]},{"id":209195,"attr1":1087,"attr2":102386,"neighbors":[209179,209180,209182,209191,209197,209198,209199,209193]},{"id":209196,"attr1":1555,"attr2":85950,"neighbors":[209192,209194,209200]},{"id":209197,"attr1":2455,"attr2":102981,"neighbors":[209191,209195,209198,209225,209260,209262,209193]},{"id":209198,"attr1":3540,"attr2":112128,"neighbors":[209195,209197,209199,209223,209225,209260]},{"id":209199,"attr1":3191,"attr2":112036,"neighbors":[209179,209195,209198,209201,209223,209225]},{"id":209200,"attr1":2420,"attr2":95341,"neighbors":[209194,209196,209202,209218,209220]},{"id":209201,"attr1":3318,"attr2":138281,"neighbors":[209178,209179,209199,209204,209221,209223]},{"id":209202,"attr1":1420,"attr2":118333,"neighbors":[209200,209205,209216,209218,209272]},{"id":209203,"attr1":1889,"attr2":101150,"neighbors":[209178,209204,209206,209209,209217]},{"id":209204,"attr1":2520,"attr2":116950,"neighbors":[209178,209201,209203,209206,209217,209221]},{"id":209205,"attr1":2510,"attr2":90608,"neighbors":[209202,209207,209215,209216]},{"id":209206,"attr1":2143,"attr2":85563,"neighbors":[209203,209204,209209,209214,209217]},{"id":209207,"attr1":1722,"attr2":29531,"neighbors":[209205,209208,209213,209215]},{"id":209208,"attr1":2436,"attr2":68958,"neighbors":[209210,209207,209213]},{"id":209209,"attr1":2423,"attr2":72841,"neighbors":[209203,209206,209214,209219,209230,209235,209255]},{"id":209210,"attr1":3406,"attr2":59696,"neighbors":[209211,209292,209208,209213,209290]},{"id":209211,"attr1":2482,"attr2":53984,"neighbors":[209210,209212,209292]},{"id":209212,"attr1":1730,"attr2":60164,"neighbors":[209211,209292,209294]},{"id":209213,"attr1":3333,"attr2":50528,"neighbors":[209210,209292,209207,209208,209215,209290]},{"id":209214,"attr1":1429,"attr2":57143,"neighbors":[209206,209209,209217,209219,209235]},{"id":209215,"attr1":2717,"attr2":64286,"neighbors":[209205,209207,209213,209216,209272,209290]},{"id":209216,"attr1":2818,"attr2":47050,"neighbors":[209202,209205,209215,209272,209290]},{"id":209217,"attr1":1952,"attr2":97614,"neighbors":[209203,209204,209206,209214,209219,209221]},{"id":209218,"attr1":3244,"attr2":64214,"neighbors":[209200,209202,209220,209268,209270,209272]},{"id":209219,"attr1":5412,"attr2":109492,"neighbors":[209209,209214,209217,209221,209228,209230]},{"id":209220,"attr1":3797,"attr2":59981,"neighbors":[209194,209200,209218,209222,209264,209268,209270]},{"id":209221,"attr1":3799,"attr2":145294,"neighbors":[209201,209204,209217,209219,209223,209228]},{"id":209222,"attr1":5290,"attr2":40857,"neighbors":[209189,209194,209220,209224,209259,209264]},{"id":209223,"attr1":3582,"attr2":131284,"neighbors":[209198,209199,209201,209221,209225,209228]},{"id":209224,"attr1":2463,"attr2":42218,"neighbors":[209186,209189,209222,209226,209258,209259]},{"id":209225,"attr1":5002,"attr2":36890,"neighbors":[209197,209198,209199,209223,209228,209255,209260]},{"id":209226,"attr1":2341,"attr2":37364,"neighbors":[209186,209224,209227,209258,209259]},{"id":209227,"attr1":6061,"attr2":46204,"neighbors":[209229,209186,209226,209243,209245,209258]},{"id":209228,"attr1":4774,"attr2":135697,"neighbors":[209219,209221,209223,209225,209230,209255]},{"id":209229,"attr1":4775,"attr2":32996,"neighbors":[209231,209184,209186,209227,209242,209243,209245]},{"id":209230,"attr1":4409,"attr2":123592,"neighbors":[209209,209219,209228,209255]},{"id":209231,"attr1":5493,"attr2":42000,"neighbors":[209232,209229,209184,209241,209242,209243]},{"id":209232,"attr1":4373,"attr2":53380,"neighbors":[209174,209231,209184,209233,209241,209242]},{"id":209233,"attr1":4148,"attr2":35511,"neighbors":[209232,209174,209234,209237,209241]},{"id":209234,"attr1":3860,"attr2":49274,"neighbors":[209174,209237,209244,209233]},{"id":209235,"attr1":6916,"attr2":14000,"neighbors":[209209,209214]},{"id":209237,"attr1":3397,"attr2":53528,"neighbors":[209234,209238,209233,209239]},{"id":209238,"attr1":3224,"attr2":36925,"neighbors":[209237,209249,209239,209250]},{"id":209239,"attr1":5407,"attr2":38042,"neighbors":[209237,209238,209249,209240,209241,209250]},{"id":209240,"attr1":5837,"attr2":40239,"neighbors":[209239,209241,209242,209248,209250,209251]},{"id":209241,"attr1":5951,"attr2":32829,"neighbors":[209232,209231,209233,209239,209240,209242,209248]},{"id":209242,"attr1":8178,"attr2":31961,"neighbors":[209232,209229,209231,209240,209241,209243,209247,209248]},{"id":209243,"attr1":6312,"attr2":33229,"neighbors":[209229,209231,209227,209242,209245,209246,209247,209248]},{"id":209244,"attr1":4402,"attr2":43779,"neighbors":[209234,209278]},{"id":209245,"attr1":5265,"attr2":42911,"neighbors":[209229,209227,209243,209246,209247,209254,209258]},{"id":209246,"attr1":5937,"attr2":37787,"neighbors":[209243,209245,209247,209252,209254]},{"id":209247,"attr1":5747,"attr2":37531,"neighbors":[209242,209243,209245,209246,209248,209251,209252]},{"id":209248,"attr1":4267,"attr2":32122,"neighbors":[209240,209241,209242,209243,209247,209251,209252]},{"id":209249,"attr1":2708,"attr2":40238,"neighbors":[209238,209239,209250,209350,209351]},{"id":209250,"attr1":6527,"attr2":30032,"neighbors":[209238,209249,209239,209240,209251,209349,209350]},{"id":209251,"attr1":4500,"attr2":42402,"neighbors":[209240,209247,209248,209250,209252,209345,209347,209349]},{"id":209252,"attr1":4274,"attr2":32267,"neighbors":[209246,209247,209248,209251,209254,209341,209343,209345,209347]},{"id":209253,"attr1":2674,"attr2":72429,"neighbors":[209255,209257,209273,209275,209277]},{"id":209254,"attr1":2128,"attr2":31447,"neighbors":[209245,209246,209252,209256,209258,209339,209341]},{"id":209255,"attr1":1614,"attr2":82969,"neighbors":[209209,209225,209228,209230,209253,209257,209260,209265,209267,209269,209271]},{"id":209256,"attr1":1255,"attr2":28750,"neighbors":[209254,209258,209259,209261,209337,209339,209341]},{"id":209257,"attr1":1807,"attr2":93393,"neighbors":[209253,209255,209271,209273]},{"id":209258,"attr1":5697,"attr2":36250,"neighbors":[209224,209226,209227,209245,209254,209256,209259]},{"id":209259,"attr1":2767,"attr2":37179,"neighbors":[209222,209224,209226,209256,209258,209261,209264,209266,209268]},{"id":209260,"attr1":3929,"attr2":51397,"neighbors":[209197,209198,209225,209255,209262,209265]},{"id":209261,"attr1":2094,"attr2":42596,"neighbors":[209256,209259,209266,209268,209336,209337,209339]},{"id":209262,"attr1":2577,"attr2":82071,"neighbors":[209197,209260,209263,209265,209193]},{"id":209263,"attr1":2064,"attr2":86290,"neighbors":[209262,209265,209289,209308,209193,209291]},{"id":209264,"attr1":5224,"attr2":57549,"neighbors":[209220,209222,209259,209268]},{"id":209265,"attr1":4244,"attr2":111950,"neighbors":[209255,209260,209262,209263,209267,209288,209289,209291]},{"id":209266,"attr1":2397,"attr2":56167,"neighbors":[209259,209261,209268,209270,209276,209334,209336,209337]},{"id":209267,"attr1":4674,"attr2":144293,"neighbors":[209255,209265,209269,209287,209288,209289]},{"id":209268,"attr1":3860,"attr2":66172,"neighbors":[209218,209220,209259,209261,209264,209266,209270]},{"id":209269,"attr1":3694,"attr2":126111,"neighbors":[209255,209267,209271,209285,209287,209288]},{"id":209270,"attr1":3813,"attr2":66375,"neighbors":[209218,209220,209266,209268,209272,209276,209334]},{"id":209271,"attr1":3278,"attr2":99648,"neighbors":[209255,209257,209269,209273,209283,209285,209287]},{"id":209272,"attr1":3423,"attr2":52645,"neighbors":[209202,209215,209216,209218,209270,209276,209290]},{"id":209273,"attr1":3652,"attr2":100787,"neighbors":[209253,209257,209271,209275,209281,209283,209285]},{"id":209274,"attr1":1843,"attr2":59130,"neighbors":[209284,209276,209290,209296,209332,209334]},{"id":209275,"attr1":3928,"attr2":78125,"neighbors":[209253,209273,209277,209281,209283]},{"id":209276,"attr1":3105,"attr2":56324,"neighbors":[209284,209266,209270,209272,209274,209290,209334]},{"id":209277,"attr1":3610,"attr2":80170,"neighbors":[209253,209275,209278,209279,209281]},{"id":209278,"attr1":4424,"attr2":64926,"neighbors":[209244,209277,209279]},{"id":209279,"attr1":2104,"attr2":81181,"neighbors":[209277,209278,209281,209931]},{"id":209280,"attr1":1256,"attr2":56500,"neighbors":[209282,209296,209326,209328,209330]},{"id":209281,"attr1":5772,"attr2":103378,"neighbors":[209299,209273,209275,209277,209279,209283,209297,209931]},{"id":209282,"attr1":1642,"attr2":82188,"neighbors":[209280,209300,209313,209315,209326,209328]},{"id":209283,"attr1":4273,"attr2":121742,"neighbors":[209271,209273,209275,209281,209285,209297]},{"id":209284,"attr1":2567,"attr2":70598,"neighbors":[209294,209274,209276,209290]},{"id":209285,"attr1":2961,"attr2":115000,"neighbors":[209269,209271,209273,209283,209287,209297,209295]},{"id":209287,"attr1":3674,"attr2":128611,"neighbors":[209267,209269,209271,209285,209288,209295]},{"id":209288,"attr1":4289,"attr2":102500,"neighbors":[209265,209267,209269,209287,209289,209295]},{"id":209289,"attr1":5157,"attr2":130806,"neighbors":[209263,209265,209267,209288,209335,209291,209293,209295]},{"id":209290,"attr1":4475,"attr2":60698,"neighbors":[209210,209284,209292,209294,209213,209215,209216,209272,209274,209276]},{"id":209291,"attr1":3139,"attr2":103500,"neighbors":[209263,209265,209289,209308,209193,209293]},{"id":209292,"attr1":2560,"attr2":71602,"neighbors":[209210,209211,209212,209294,209213,209290]},{"id":209293,"attr1":3223,"attr2":86234,"neighbors":[209289,209308,209331,209335,209291,209327,209333]},{"id":209294,"attr1":654,"attr2":97760,"neighbors":[209212,209284,209292,209298,209290]},{"id":209295,"attr1":5706,"attr2":124714,"neighbors":[209285,209287,209288,209289,209297]},{"id":209296,"attr1":2080,"attr2":80395,"neighbors":[209280,209274,209328,209330,209332,209334]},{"id":209297,"attr1":5278,"attr2":107466,"neighbors":[209299,209281,209283,209285,209295]},{"id":209298,"attr1":1801,"attr2":82891,"neighbors":[209294,209300,209302,209303]},{"id":209299,"attr1":4779,"attr2":78504,"neighbors":[209281,209297,209931,209301]},{"id":209300,"attr1":4115,"attr2":72875,"neighbors":[209282,209298,209302,209313]},{"id":209301,"attr1":3943,"attr2":108384,"neighbors":[209299,209599,209931]},{"id":209302,"attr1":4040,"attr2":70125,"neighbors":[209298,209300,209303,209309,209311,209313]},{"id":209303,"attr1":1908,"attr2":72692,"neighbors":[209298,209302,209305,209307,209309]},{"id":209305,"attr1":2322,"attr2":55865,"neighbors":[209303,209307,209309,209404]},{"id":209307,"attr1":3226,"attr2":55745,"neighbors":[209303,209305,209309,209311,209400,209402,209404]},{"id":209308,"attr1":4131,"attr2":45947,"neighbors":[209263,209193,209291,209293,209310,209325,209327]},{"id":209309,"attr1":3512,"attr2":57194,"neighbors":[209302,209303,209305,209307,209311,209313]},{"id":209310,"attr1":3424,"attr2":80911,"neighbors":[209190,209191,209308,209312,209193,209325,209327]},{"id":209311,"attr1":3600,"attr2":47206,"neighbors":[209302,209307,209309,209313,209315,209388,209400,209317]},{"id":209312,"attr1":2692,"attr2":93625,"neighbors":[209190,209314,209316,209323,209310,209325]},{"id":209313,"attr1":2551,"attr2":76210,"neighbors":[209282,209300,209302,209309,209311,209315]},{"id":209314,"attr1":4530,"attr2":17407,"neighbors":[209190,209312,209316,209338,209188]},{"id":209315,"attr1":2072,"attr2":68021,"neighbors":[209282,209311,209313,209317,209326]},{"id":209316,"attr1":1405,"attr2":89375,"neighbors":[209312,209314,209319,209323,209338,209638]},{"id":209317,"attr1":2879,"attr2":56339,"neighbors":[209311,209315,209388,209318,209326,209386]},{"id":209318,"attr1":5134,"attr2":45132,"neighbors":[209388,209324,209317,209322,209326,209373,209386]},{"id":209319,"attr1":2902,"attr2":78750,"neighbors":[209316,209321,209323,209338,209634,209638,209930,209360]},{"id":209320,"attr1":3398,"attr2":38561,"neighbors":[209322,209339,209341,209343,209363,209365,209373]},{"id":209321,"attr1":5761,"attr2":54369,"neighbors":[209319,209323,209356,209358,209930,209325,209360]},{"id":209322,"attr1":3786,"attr2":46071,"neighbors":[209324,209318,209320,209337,209339,209373]},{"id":209323,"attr1":4188,"attr2":84187,"neighbors":[209312,209316,209319,209321,209325]},{"id":209324,"attr1":5120,"attr2":48382,"neighbors":[209318,209322,209326,209328,209330,209336,209337]},{"id":209325,"attr1":3508,"attr2":83650,"neighbors":[209308,209312,209321,209323,209329,209356,209310,209327]},{"id":209326,"attr1":1978,"attr2":61875,"neighbors":[209280,209282,209315,209324,209317,209318,209328]},{"id":209327,"attr1":2863,"attr2":67656,"neighbors":[209308,209329,209331,209293,209310,209325]},{"id":209328,"attr1":2216,"attr2":58000,"neighbors":[209280,209282,209324,209296,209326,209330,209336]},{"id":209329,"attr1":3886,"attr2":84844,"neighbors":[209331,209352,209356,209430,209325,209327]},{"id":209330,"attr1":2131,"attr2":95152,"neighbors":[209280,209324,209296,209328,209332,209336]},{"id":209331,"attr1":1688,"attr2":106250,"neighbors":[209329,209352,209430,209293,209327,209333]},{"id":209332,"attr1":1947,"attr2":65598,"neighbors":[209274,209296,209330,209334,209336]},{"id":209333,"attr1":2747,"attr2":78000,"neighbors":[209331,209335,209342,209430,209293]},{"id":209334,"attr1":2706,"attr2":89743,"neighbors":[209266,209270,209274,209276,209296,209332,209336]},{"id":209335,"attr1":4536,"attr2":97353,"neighbors":[209289,209342,209293,209333]},{"id":209336,"attr1":3272,"attr2":56003,"neighbors":[209324,209261,209266,209328,209330,209332,209334,209337]},{"id":209337,"attr1":4946,"attr2":44722,"neighbors":[209324,209256,209261,209266,209322,209336,209339]},{"id":209338,"attr1":1362,"attr2":43000,"neighbors":[209182,209187,209314,209316,209319,209188,209638]},{"id":209339,"attr1":5176,"attr2":35330,"neighbors":[209254,209256,209261,209320,209322,209337,209341]},{"id":209340,"attr1":4296,"attr2":38750,"neighbors":[209342,209344,209346,209444,209446]},{"id":209341,"attr1":2437,"attr2":55184,"neighbors":[209252,209254,209256,209320,209339,209343]},{"id":209342,"attr1":5136,"attr2":61723,"neighbors":[209335,209344,209430,209333,209340]},{"id":209343,"attr1":4458,"attr2":35682,"neighbors":[209252,209320,209341,209345,209362,209363]},{"id":209344,"attr1":3904,"attr2":54595,"neighbors":[209342,209346,209430,209444,209340,209348]},{"id":209345,"attr1":4389,"attr2":35721,"neighbors":[209251,209252,209343,209347,209361,209362,209363]},{"id":209346,"attr1":3617,"attr2":55758,"neighbors":[209344,209430,209444,209443,209340,209348,209439,209440,209442]},{"id":209347,"attr1":4313,"attr2":30861,"neighbors":[209251,209252,209345,209349,209359,209361,209362]},{"id":209348,"attr1":4255,"attr2":37140,"neighbors":[209344,209346,209352,209430,209370,209438,209439]},{"id":209349,"attr1":4524,"attr2":35094,"neighbors":[209250,209251,209347,209350,209357,209359]},{"id":209350,"attr1":5981,"attr2":37271,"neighbors":[209249,209250,209349,209351,209355,209357]},{"id":209351,"attr1":2438,"attr2":48269,"neighbors":[209249,209350,209353,209355,209593,209595]},{"id":209352,"attr1":3725,"attr2":53363,"neighbors":[209329,209331,209356,209430,209348,209354,209368,209370]},{"id":209353,"attr1":3367,"attr2":30913,"neighbors":[209351,209355,209578,209584,209593]},{"id":209354,"attr1":3780,"attr2":51645,"neighbors":[209352,209356,209358,209366,209368]},{"id":209355,"attr1":3832,"attr2":31102,"neighbors":[209350,209351,209353,209357,209578]},{"id":209356,"attr1":3506,"attr2":77039,"neighbors":[209321,209329,209352,209358,209325,209354]},{"id":209357,"attr1":5753,"attr2":33801,"neighbors":[209349,209350,209355,209359,209576,209578]},{"id":209358,"attr1":4863,"attr2":33141,"neighbors":[209321,209356,209354,209360,209364,209366]},{"id":209359,"attr1":5162,"attr2":24978,"neighbors":[209347,209349,209357,209361,209575,209576]},{"id":209360,"attr1":4015,"attr2":45406,"neighbors":[209319,209321,209358,209930,209364]},{"id":209361,"attr1":5693,"attr2":24240,"neighbors":[209345,209347,209359,209362,209574,209575]},{"id":209362,"attr1":4142,"attr2":29050,"neighbors":[209343,209345,209347,209361,209363,209573,209574]},{"id":209363,"attr1":4471,"attr2":26823,"neighbors":[209320,209343,209345,209362,209365,209573]},{"id":209364,"attr1":2375,"attr2":60815,"neighbors":[209358,209378,209930,209360,209366,209374,209376]},{"id":209365,"attr1":3052,"attr2":38333,"neighbors":[209320,209363,209367,209371,209373,209573]},{"id":209366,"attr1":4273,"attr2":54505,"neighbors":[209358,209354,209364,209368,209372,209374,209376]},{"id":209367,"attr1":3757,"attr2":48611,"neighbors":[209365,209369,209371,209572,209573]},{"id":209368,"attr1":3855,"attr2":51605,"neighbors":[209352,209354,209366,209370,209372,209374]},{"id":209369,"attr1":3195,"attr2":45417,"neighbors":[209377,209548,209558,209367,209371,209560,209572]},{"id":209370,"attr1":2104,"attr2":42308,"neighbors":[209352,209430,209348,209368,209372,209393,209395,209436,209438]},{"id":209371,"attr1":3056,"attr2":46310,"neighbors":[209377,209365,209367,209369,209373,209375]},{"id":209372,"attr1":3973,"attr2":48315,"neighbors":[209366,209368,209370,209374,209389,209391,209393]},{"id":209373,"attr1":1527,"attr2":46190,"neighbors":[209318,209320,209322,209365,209371,209375,209386]},{"id":209374,"attr1":3522,"attr2":27125,"neighbors":[209364,209366,209368,209372,209376,209385,209387,209389]},{"id":209375,"attr1":5337,"attr2":42302,"neighbors":[209377,209379,209384,209371,209373,209386]},{"id":209376,"attr1":2540,"attr2":43491,"neighbors":[209364,209366,209374,209385,209387,209378,209380,209382,209930]},{"id":209377,"attr1":4256,"attr2":48261,"neighbors":[209379,209544,209548,209558,209369,209371,209375]},{"id":209378,"attr1":5270,"attr2":22500,"neighbors":[209380,209382,209604,209629,209930,209364,209376]},{"id":209379,"attr1":3195,"attr2":53036,"neighbors":[209377,209381,209384,209542,209544,209548,209375]},{"id":209380,"attr1":2177,"attr2":51310,"neighbors":[209376,209378,209383,209409,209410,209382,209604,209629]},{"id":209381,"attr1":4225,"attr2":37917,"neighbors":[209379,209384,209390,209542]},{"id":209382,"attr1":1914,"attr2":41289,"neighbors":[209376,209385,209378,209380,209383,209407,209410]},{"id":209383,"attr1":3737,"attr2":16140,"neighbors":[209380,209407,209409,209410,209382]},{"id":209384,"attr1":3687,"attr2":50123,"neighbors":[209379,209381,209388,209390,209375,209386]},{"id":209385,"attr1":4987,"attr2":38859,"neighbors":[209374,209376,209387,209403,209405,209407,209382]},{"id":209386,"attr1":2422,"attr2":57121,"neighbors":[209384,209388,209317,209318,209373,209375]},{"id":209387,"attr1":2002,"attr2":39861,"neighbors":[209374,209376,209385,209389,209403,209405]},{"id":209388,"attr1":4946,"attr2":47336,"neighbors":[209311,209384,209390,209398,209400,209317,209318,209386]},{"id":209389,"attr1":3558,"attr2":51050,"neighbors":[209372,209374,209387,209391,209401,209403]},{"id":209390,"attr1":3418,"attr2":50580,"neighbors":[209381,209384,209388,209392,209398,209542]},{"id":209391,"attr1":3531,"attr2":41458,"neighbors":[209372,209389,209393,209399,209401]},{"id":209392,"attr1":3690,"attr2":44548,"neighbors":[209390,209396,209398,209542]},{"id":209393,"attr1":2685,"attr2":48841,"neighbors":[209370,209372,209391,209395,209397,209399]},{"id":209394,"attr1":2539,"attr2":50490,"neighbors":[209396,209413,209415,209421,209423,209515,209540]},{"id":209395,"attr1":2502,"attr2":37104,"neighbors":[209422,209370,209393,209397,209424,209432,209434,209435,209436,209493]},{"id":209396,"attr1":3692,"attr2":50982,"neighbors":[209392,209394,209398,209400,209402,209408,209413,209415,209540,209542]},{"id":209397,"attr1":2649,"attr2":34297,"neighbors":[209422,209393,209395,209399,209420]},{"id":209398,"attr1":3090,"attr2":42266,"neighbors":[209388,209390,209392,209396,209400]},{"id":209399,"attr1":4346,"attr2":55990,"neighbors":[209422,209391,209393,209397,209401,209418,209420]},{"id":209400,"attr1":4325,"attr2":46194,"neighbors":[209307,209311,209388,209396,209398,209402,209408]},{"id":209401,"attr1":4975,"attr2":37875,"neighbors":[209416,209389,209391,209399,209403,209418,209420]},{"id":209402,"attr1":3418,"attr2":47917,"neighbors":[209307,209396,209400,209404,209406,209408]},{"id":209403,"attr1":3914,"attr2":57869,"neighbors":[209416,209385,209387,209389,209401,209405,209414,209418]},{"id":209404,"attr1":1690,"attr2":56974,"neighbors":[209305,209307,209402,209406,209408]},{"id":209405,"attr1":4882,"attr2":25082,"neighbors":[209416,209385,209387,209403,209414,209407,209412]},{"id":209406,"attr1":3226,"attr2":41974,"neighbors":[209402,209404,209408,209411]},{"id":209407,"attr1":4150,"attr2":32917,"neighbors":[209385,209405,209383,209410,209412,209382]},{"id":209408,"attr1":3662,"attr2":51849,"neighbors":[209396,209400,209402,209404,209406,209411,209413]},{"id":209409,"attr1":293,"attr2":84861,"neighbors":[209380,209383,209410,209500,209588,209604]},{"id":209410,"attr1":2626,"attr2":15135,"neighbors":[209380,209383,209407,209409,209412,209382,209500]},{"id":209411,"attr1":4692,"attr2":43828,"neighbors":[209406,209408,209413,209415,209417]},{"id":209412,"attr1":2774,"attr2":30755,"neighbors":[209405,209414,209407,209410,209500,209504]},{"id":209413,"attr1":3495,"attr2":41786,"neighbors":[209394,209396,209408,209411,209415,209417]},{"id":209414,"attr1":3408,"attr2":39570,"neighbors":[209416,209403,209405,209498,209506,209412,209504]},{"id":209415,"attr1":4017,"attr2":45179,"neighbors":[209394,209396,209411,209413,209417,209421]},{"id":209416,"attr1":2843,"attr2":35521,"neighbors":[209401,209403,209405,209414,209418,209498]},{"id":209417,"attr1":2540,"attr2":42740,"neighbors":[209411,209413,209415,209419,209421]},{"id":209418,"attr1":3426,"attr2":30479,"neighbors":[209416,209496,209399,209401,209403,209420,209498]},{"id":209419,"attr1":2489,"attr2":53625,"neighbors":[209417,209421,209427,209429]},{"id":209420,"attr1":3803,"attr2":54276,"neighbors":[209422,209496,209397,209399,209401,209418,209495]},{"id":209421,"attr1":5711,"attr2":44875,"neighbors":[209394,209415,209417,209419,209423,209425,209427,209429]},{"id":209422,"attr1":3969,"attr2":50260,"neighbors":[209395,209397,209399,209420,209424,209493,209495]},{"id":209423,"attr1":3871,"attr2":55938,"neighbors":[209394,209421,209425,209513,209515]},{"id":209424,"attr1":2663,"attr2":22734,"neighbors":[209422,209395,209426,209428,209432,209434,209492,209493]},{"id":209425,"attr1":4048,"attr2":64615,"neighbors":[209421,209423,209427,209431,209513]},{"id":209426,"attr1":2752,"attr2":44911,"neighbors":[209424,209428,209432,209480,209484,209486,209492,209493]},{"id":209427,"attr1":4355,"attr2":60370,"neighbors":[209419,209421,209425,209429,209431]},{"id":209428,"attr1":5018,"attr2":19696,"neighbors":[209424,209426,209432,209473,209478,209480]},{"id":209429,"attr1":3742,"attr2":37837,"neighbors":[209419,209421,209427,209431,209437,209453]},{"id":209430,"attr1":5951,"attr2":65701,"neighbors":[209329,209331,209342,209344,209346,209352,209333,209348,209370]},{"id":209431,"attr1":2029,"attr2":60132,"neighbors":[209425,209427,209429,209433,209437,209494,209513]},{"id":209432,"attr1":4304,"attr2":24706,"neighbors":[209395,209424,209426,209428,209434,209460,209461,209473,209478]},{"id":209433,"attr1":1898,"attr2":50189,"neighbors":[209431,209437,209462,209468,209489,209494,209497]},{"id":209434,"attr1":2134,"attr2":29375,"neighbors":[209395,209424,209432,209435,209459,209460,209461]},{"id":209435,"attr1":2805,"attr2":41683,"neighbors":[209395,209434,209436,209457,209459,209460]},{"id":209436,"attr1":4242,"attr2":34817,"neighbors":[209370,209395,209435,209438,209439,209457,209459]},{"id":209437,"attr1":4409,"attr2":40486,"neighbors":[209429,209431,209433,209449,209453,209462]},{"id":209438,"attr1":4798,"attr2":54113,"neighbors":[209348,209370,209436,209439,209457]},{"id":209439,"attr1":3262,"attr2":50205,"neighbors":[209346,209348,209436,209438,209440,209455,209457]},{"id":209440,"attr1":3857,"attr2":53111,"neighbors":[209346,209439,209442,209454,209455,209457,209441,209443]},{"id":209441,"attr1":3782,"attr2":40744,"neighbors":[209440,209442,209450,209451,209452,209454,209448]},{"id":209442,"attr1":5897,"attr2":41094,"neighbors":[209346,209440,209446,209441,209448,209443]},{"id":209443,"attr1":3835,"attr2":53851,"neighbors":[209346,209444,209440,209442,209446,209448]},{"id":209444,"attr1":6446,"attr2":43245,"neighbors":[209344,209346,209340,209446,209443]},{"id":209445,"attr1":6947,"attr2":20833,"neighbors":[209447,209449,209456,209458,209462,209466]},{"id":209446,"attr1":2501,"attr2":47153,"neighbors":[209444,209772,209340,209442,209773,209774,209448,209443]},{"id":209447,"attr1":2621,"attr2":45357,"neighbors":[209445,209449,209453,209458]},{"id":209448,"attr1":5783,"attr2":47578,"neighbors":[209442,209446,209450,209774,209441,209776,209777,209443]},{"id":209449,"attr1":4634,"attr2":23007,"neighbors":[209437,209445,209447,209453,209462]},{"id":209450,"attr1":4378,"attr2":39301,"neighbors":[209451,209469,209808,209809,209441,209448,209777]},{"id":209451,"attr1":4719,"attr2":44608,"neighbors":[209450,209452,209467,209469,209441]},{"id":209452,"attr1":3115,"attr2":61164,"neighbors":[209451,209454,209467,209441]},{"id":209453,"attr1":4008,"attr2":62649,"neighbors":[209429,209437,209447,209449,209456,209458,209466]},{"id":209454,"attr1":3818,"attr2":48114,"neighbors":[209440,209452,209455,209467,209441]},{"id":209455,"attr1":4495,"attr2":34231,"neighbors":[209439,209440,209454,209457,209459,209460,209467]},{"id":209456,"attr1":2166,"attr2":17574,"neighbors":[209445,209453,209458,209466]},{"id":209457,"attr1":2803,"attr2":50417,"neighbors":[209435,209436,209438,209439,209440,209455,209459]},{"id":209458,"attr1":5748,"attr2":16656,"neighbors":[209445,209447,209453,209456,209466]},{"id":209459,"attr1":5097,"attr2":25019,"neighbors":[209434,209435,209436,209455,209457,209460,209467]},{"id":209460,"attr1":2899,"attr2":31701,"neighbors":[209432,209434,209435,209455,209459,209461,209463,209465,209467]},{"id":209461,"attr1":3326,"attr2":29114,"neighbors":[209432,209434,209460,209463,209465,209472,209473]},{"id":209462,"attr1":2185,"attr2":46346,"neighbors":[209433,209437,209445,209449,209464,209466,209468,209489]},{"id":209463,"attr1":5297,"attr2":29754,"neighbors":[209460,209461,209465,209469,209472]},{"id":209464,"attr1":2806,"attr2":30889,"neighbors":[209462,209466,209468]},{"id":209465,"attr1":4437,"attr2":24519,"neighbors":[209460,209461,209463,209467,209469]},{"id":209466,"attr1":1035,"attr2":11011,"neighbors":[209445,209453,209456,209458,209462,209464,209468,209471,209474,209475,209689]},{"id":209467,"attr1":5140,"attr2":39934,"neighbors":[209451,209452,209454,209455,209459,209460,209465,209469]},{"id":209468,"attr1":5373,"attr2":53158,"neighbors":[209433,209462,209464,209466,209470,209471,209482,209485,209488,209489]},{"id":209469,"attr1":5620,"attr2":39850,"neighbors":[209450,209451,209463,209465,209467,209472,209808,209809,209811,209812]},{"id":209470,"attr1":2592,"attr2":35954,"neighbors":[209468,209471,209479,209482]},{"id":209471,"attr1":4835,"attr2":32348,"neighbors":[209466,209468,209470,209474,209477,209479,209482]},{"id":209472,"attr1":2499,"attr2":21227,"neighbors":[209461,209463,209469,209473,209812,209813,209817,209821]},{"id":209473,"attr1":5213,"attr2":30898,"neighbors":[209428,209432,209461,209472,209476,209478,209817,209821]},{"id":209474,"attr1":2899,"attr2":22384,"neighbors":[209466,209471,209475,209477]},{"id":209475,"attr1":3975,"attr2":18738,"neighbors":[209466,209474,209477,209689,209691]},{"id":209476,"attr1":2375,"attr2":26936,"neighbors":[209473,209478,209822,209821]},{"id":209477,"attr1":3345,"attr2":28750,"neighbors":[209471,209474,209475,209479,209689,209690,209691]},{"id":209478,"attr1":4076,"attr2":29741,"neighbors":[209428,209432,209473,209476,209480,209481,209822,209823,209831]},{"id":209479,"attr1":2077,"attr2":33750,"neighbors":[209470,209471,209477,209482,209690]},{"id":209480,"attr1":2677,"attr2":39019,"neighbors":[209426,209428,209478,209481,209483,209484]},{"id":209481,"attr1":1164,"attr2":27364,"neighbors":[209478,209480,209483,209484,209823,209824,209895]},{"id":209482,"attr1":4702,"attr2":36487,"neighbors":[209468,209470,209471,209479,209485,209488,209688,209690,209687]},{"id":209483,"attr1":1426,"attr2":51140,"neighbors":[209480,209481,209484,209516,209893,209895,209923]},{"id":209484,"attr1":4839,"attr2":31059,"neighbors":[209426,209480,209481,209483,209486,209487,209514,209516]},{"id":209485,"attr1":4074,"attr2":66836,"neighbors":[209468,209482,209488,209501,209674,209688,209687,209676]},{"id":209486,"attr1":4705,"attr2":46641,"neighbors":[209426,209484,209487,209492]},{"id":209487,"attr1":4110,"attr2":29057,"neighbors":[209484,209486,209490,209491,209492,209508,209512,209514]},{"id":209488,"attr1":4174,"attr2":51857,"neighbors":[209468,209482,209485,209489,209499,209501]},{"id":209489,"attr1":4668,"attr2":30449,"neighbors":[209433,209462,209468,209488,209497,209499]},{"id":209490,"attr1":3129,"attr2":45573,"neighbors":[209496,209487,209491,209495,209498,209506,209508]},{"id":209491,"attr1":4240,"attr2":40272,"neighbors":[209487,209490,209492,209493,209495]},{"id":209492,"attr1":3537,"attr2":40412,"neighbors":[209424,209426,209486,209487,209491,209493]},{"id":209493,"attr1":5550,"attr2":27885,"neighbors":[209422,209395,209424,209426,209491,209492,209495]},{"id":209494,"attr1":5786,"attr2":17308,"neighbors":[209431,209433,209497,209513]},{"id":209495,"attr1":4655,"attr2":48712,"neighbors":[209422,209496,209420,209490,209491,209493]},{"id":209496,"attr1":3364,"attr2":39141,"neighbors":[209418,209420,209490,209495,209498]},{"id":209497,"attr1":3622,"attr2":44766,"neighbors":[209433,209489,209494,209499,209509,209513]},{"id":209498,"attr1":4058,"attr2":36430,"neighbors":[209416,209496,209414,209418,209490,209506]},{"id":209499,"attr1":4049,"attr2":60132,"neighbors":[209488,209489,209497,209501,209505,209507,209509]},{"id":209500,"attr1":3249,"attr2":47059,"neighbors":[209409,209410,209412,209502,209504,209583,209586,209588,209604]},{"id":209501,"attr1":2318,"attr2":45682,"neighbors":[209485,209488,209499,209503,209505,209507,209674,209676]},{"id":209502,"attr1":3086,"attr2":35542,"neighbors":[209500,209504,209535,209537,209583,209586]},{"id":209503,"attr1":2807,"attr2":33125,"neighbors":[209501,209505,209673,209674]},{"id":209504,"attr1":3444,"attr2":52244,"neighbors":[209414,209506,209412,209500,209502,209533,209535]},{"id":209505,"attr1":2480,"attr2":51927,"neighbors":[209499,209501,209503,209507,209526,209528,209673,209651]},{"id":209506,"attr1":3789,"attr2":27870,"neighbors":[209414,209490,209498,209508,209510,209529,209504,209531,209533]},{"id":209507,"attr1":2090,"attr2":46926,"neighbors":[209499,209501,209505,209509,209511,209525,209526]},{"id":209508,"attr1":3261,"attr2":38266,"neighbors":[209487,209490,209506,209510,209512]},{"id":209509,"attr1":2859,"attr2":52721,"neighbors":[209497,209499,209507,209511,209513]},{"id":209510,"attr1":3384,"attr2":31563,"neighbors":[209506,209508,209512,209524,209527,209529,209531]},{"id":209511,"attr1":3429,"attr2":41759,"neighbors":[209507,209509,209513,209517,209519,209521,209525]},{"id":209512,"attr1":3356,"attr2":42079,"neighbors":[209487,209508,209510,209514,209522,209524]},{"id":209513,"attr1":2683,"attr2":42000,"neighbors":[209423,209425,209431,209494,209497,209509,209511,209515,209517]},{"id":209514,"attr1":3724,"attr2":27827,"neighbors":[209484,209487,209512,209516,209522]},{"id":209515,"attr1":2451,"attr2":39947,"neighbors":[209394,209423,209513,209517,209540]},{"id":209516,"attr1":1539,"attr2":40815,"neighbors":[209483,209484,209514,209893]},{"id":209517,"attr1":3335,"attr2":44107,"neighbors":[209511,209513,209515,209519,209538,209540]},{"id":209519,"attr1":3304,"attr2":59056,"neighbors":[209511,209517,209521,209536,209538,209540]},{"id":209520,"attr1":3738,"attr2":37635,"neighbors":[209522,209524,209549]},{"id":209521,"attr1":1854,"attr2":43750,"neighbors":[209511,209519,209523,209525,209536,209538]},{"id":209522,"attr1":3387,"attr2":35068,"neighbors":[209512,209514,209520,209524]},{"id":209523,"attr1":2835,"attr2":41944,"neighbors":[209521,209525,209534,209536]},{"id":209524,"attr1":4365,"attr2":38955,"neighbors":[209510,209512,209520,209522,209527,209549]},{"id":209525,"attr1":1480,"attr2":52774,"neighbors":[209507,209511,209521,209523,209526,209534]},{"id":209526,"attr1":1611,"attr2":28884,"neighbors":[209505,209507,209525,209528,209530,209534]},{"id":209527,"attr1":4478,"attr2":53924,"neighbors":[209510,209524,209529,209549,209547]},{"id":209528,"attr1":2644,"attr2":44260,"neighbors":[209505,209526,209530,209649,209673,209651]},{"id":209529,"attr1":3158,"attr2":22022,"neighbors":[209506,209510,209527,209531,209545,209547]},{"id":209530,"attr1":2314,"attr2":33056,"neighbors":[209526,209528,209532,209534,209649,209651]},{"id":209531,"attr1":4030,"attr2":35877,"neighbors":[209506,209510,209529,209543,209533,209545]},{"id":209532,"attr1":1894,"attr2":42969,"neighbors":[209530,209534,209550,209554,209637,209649]},{"id":209533,"attr1":4016,"attr2":34362,"neighbors":[209506,209543,209504,209531,209535,209541]},{"id":209534,"attr1":3474,"attr2":68382,"neighbors":[209523,209525,209526,209530,209532,209536,209550,209554]},{"id":209535,"attr1":4986,"attr2":51083,"neighbors":[209502,209504,209533,209537,209539,209541]},{"id":209536,"attr1":3432,"attr2":46570,"neighbors":[209519,209521,209523,209534,209538,209544,209546,209550]},{"id":209537,"attr1":2906,"attr2":45642,"neighbors":[209502,209535,209539,209564,209583]},{"id":209538,"attr1":4408,"attr2":47788,"neighbors":[209517,209519,209521,209536,209540,209542,209544,209546]},{"id":209539,"attr1":5609,"attr2":47055,"neighbors":[209535,209537,209541,209559,209564]},{"id":209540,"attr1":3760,"attr2":52188,"neighbors":[209394,209396,209515,209517,209519,209538,209542]},{"id":209541,"attr1":5743,"attr2":45382,"neighbors":[209543,209533,209535,209539,209555,209557,209559]},{"id":209542,"attr1":3394,"attr2":34729,"neighbors":[209379,209381,209390,209392,209396,209538,209540,209544]},{"id":209543,"attr1":5655,"attr2":42269,"neighbors":[209531,209533,209541,209545,209553,209555,209557]},{"id":209544,"attr1":4790,"attr2":48574,"neighbors":[209377,209379,209536,209538,209542,209546,209548]},{"id":209545,"attr1":4601,"attr2":37882,"neighbors":[209529,209543,209531,209547,209551,209553]},{"id":209546,"attr1":3368,"attr2":47054,"neighbors":[209536,209538,209544,209548,209550]},{"id":209547,"attr1":5156,"attr2":41058,"neighbors":[209527,209529,209549,209545,209551]},{"id":209548,"attr1":4823,"attr2":60227,"neighbors":[209552,209377,209379,209544,209546,209550,209558,209369]},{"id":209549,"attr1":6122,"attr2":42500,"neighbors":[209520,209524,209527,209547,209551]},{"id":209550,"attr1":2632,"attr2":40227,"neighbors":[209552,209532,209534,209536,209546,209548,209554]},{"id":209551,"attr1":4155,"attr2":40455,"neighbors":[209549,209545,209547,209553]},{"id":209552,"attr1":2943,"attr2":47727,"neighbors":[209548,209550,209554,209556,209558]},{"id":209553,"attr1":6156,"attr2":49167,"neighbors":[209543,209545,209551,209555]},{"id":209554,"attr1":2743,"attr2":57366,"neighbors":[209552,209532,209534,209550,209556,209637,209565,209757]},{"id":209555,"attr1":5378,"attr2":56657,"neighbors":[209543,209541,209553,209557]},{"id":209556,"attr1":3409,"attr2":44896,"neighbors":[209552,209554,209558,209560,209563,209565]},{"id":209557,"attr1":4963,"attr2":42894,"neighbors":[209543,209541,209555,209559]},{"id":209558,"attr1":2021,"attr2":47031,"neighbors":[209552,209377,209548,209556,209369,209560]},{"id":209559,"attr1":2480,"attr2":50114,"neighbors":[209539,209541,209557,209561,209564]},{"id":209560,"attr1":1924,"attr2":52083,"neighbors":[209556,209558,209562,209369,209563,209570,209572]},{"id":209561,"attr1":3465,"attr2":33831,"neighbors":[209559,209564,209577,209580,209583,209677,209679,209681]},{"id":209562,"attr1":498,"attr2":29659,"neighbors":[209560,209563,209567,209570,209572]},{"id":209563,"attr1":2638,"attr2":67431,"neighbors":[209556,209562,209560,209565,209566,209567,209570]},{"id":209564,"attr1":2262,"attr2":55536,"neighbors":[209537,209539,209559,209561,209583]},{"id":209565,"attr1":1896,"attr2":47188,"neighbors":[209554,209556,209637,209563,209566,209567,209632,209757]},{"id":209566,"attr1":2562,"attr2":35385,"neighbors":[209563,209565,209567,209568,209626,209628,209632]},{"id":209567,"attr1":1651,"attr2":60250,"neighbors":[209562,209563,209565,209566,209568,209569,209570]},{"id":209568,"attr1":4028,"attr2":45938,"neighbors":[209566,209567,209569,209581,209619,209621,209624,209626,209628,209755]},{"id":209569,"attr1":2685,"attr2":36765,"neighbors":[209567,209568,209570,209571,209576,209579,209581]},{"id":209570,"attr1":2191,"attr2":56818,"neighbors":[209562,209560,209563,209567,209569,209571,209572]},{"id":209571,"attr1":2710,"attr2":43889,"neighbors":[209569,209570,209572,209573,209574,209575,209576,209579]},{"id":209572,"attr1":2326,"attr2":34063,"neighbors":[209562,209367,209369,209560,209570,209571,209573,209574]},{"id":209573,"attr1":2806,"attr2":46696,"neighbors":[209362,209363,209365,209367,209571,209572,209574]},{"id":209574,"attr1":2931,"attr2":51159,"neighbors":[209361,209362,209571,209572,209573,209575]},{"id":209575,"attr1":2929,"attr2":52125,"neighbors":[209359,209361,209571,209574,209576]},{"id":209576,"attr1":3958,"attr2":45588,"neighbors":[209357,209359,209569,209571,209575,209578,209579]},{"id":209577,"attr1":3760,"attr2":86932,"neighbors":[209561,209580,209594,209596,209598,209679]},{"id":209578,"attr1":4320,"attr2":31708,"neighbors":[209353,209355,209357,209576,209579,209582,209584]},{"id":209579,"attr1":3623,"attr2":30968,"neighbors":[209569,209571,209576,209578,209581,209582]},{"id":209580,"attr1":3092,"attr2":72717,"neighbors":[209561,209577,209583,209592,209594]},{"id":209581,"attr1":5688,"attr2":31992,"neighbors":[209568,209569,209579,209582,209587,209589,209624]},{"id":209582,"attr1":6210,"attr2":40724,"neighbors":[209578,209579,209581,209584,209587,209589]},{"id":209583,"attr1":3034,"attr2":85924,"neighbors":[209500,209502,209537,209561,209564,209580,209586,209590,209592]},{"id":209584,"attr1":3355,"attr2":44489,"neighbors":[209353,209578,209582,209585,209587,209593]},{"id":209585,"attr1":3961,"attr2":52000,"neighbors":[209584,209587,209591,209593]},{"id":209586,"attr1":3829,"attr2":19518,"neighbors":[209500,209502,209583,209588,209590]},{"id":209587,"attr1":6156,"attr2":35642,"neighbors":[209581,209582,209584,209585,209589,209591]},{"id":209588,"attr1":6017,"attr2":32813,"neighbors":[209409,209500,209586,209590,209602,209604,209608,209611]},{"id":209589,"attr1":3637,"attr2":46146,"neighbors":[209603,209581,209582,209587,209591,209601,209624,209932]},{"id":209590,"attr1":7398,"attr2":30613,"neighbors":[209583,209586,209588,209592,209602]},{"id":209591,"attr1":5574,"attr2":47397,"neighbors":[209585,209587,209589,209593,209601]},{"id":209592,"attr1":2702,"attr2":73913,"neighbors":[209580,209583,209590,209594,209600,209602]},{"id":209593,"attr1":3933,"attr2":57477,"neighbors":[209351,209353,209584,209585,209591,209595,209597,209601]},{"id":209594,"attr1":2776,"attr2":79934,"neighbors":[209577,209580,209592,209598,209600]},{"id":209595,"attr1":4535,"attr2":67907,"neighbors":[209351,209593,209597]},{"id":209596,"attr1":1728,"attr2":70031,"neighbors":[209577,209598,209615,209662,209664,209679]},{"id":209597,"attr1":3684,"attr2":78313,"neighbors":[209599,209931,209593,209595,209601]},{"id":209598,"attr1":2962,"attr2":73919,"neighbors":[209577,209594,209596,209600,209613,209615,209620]},{"id":209599,"attr1":2405,"attr2":73081,"neighbors":[209931,209301,209597,209601]},{"id":209600,"attr1":2431,"attr2":69712,"neighbors":[209592,209594,209598,209602,209611,209613]},{"id":209601,"attr1":4824,"attr2":86771,"neighbors":[209599,209603,209931,209589,209591,209593,209597,209932]},{"id":209602,"attr1":4289,"attr2":30216,"neighbors":[209588,209590,209592,209600,209611]},{"id":209603,"attr1":5740,"attr2":48583,"neighbors":[209610,209612,209589,209601,209605,209607,209932]},{"id":209604,"attr1":2417,"attr2":30625,"neighbors":[209378,209380,209409,209500,209588,209608,209629]},{"id":209605,"attr1":3948,"attr2":40417,"neighbors":[209603,209606,209610,209607,209769,209771]},{"id":209606,"attr1":2111,"attr2":38807,"neighbors":[209773,209605,209607,209770,209771]},{"id":209607,"attr1":5782,"attr2":50440,"neighbors":[209603,209606,209605,209773]},{"id":209608,"attr1":4104,"attr2":32762,"neighbors":[209588,209604,209611,209625,209627,209629,209631]},{"id":209609,"attr1":4274,"attr2":44332,"neighbors":[209610,209612,209614,209768,209769]},{"id":209610,"attr1":5028,"attr2":45982,"neighbors":[209603,209612,209605,209609,209769,209771]},{"id":209611,"attr1":3798,"attr2":31047,"neighbors":[209588,209600,209602,209608,209613,209625,209627]},{"id":209612,"attr1":6103,"attr2":36661,"neighbors":[209603,209610,209609,209614,209932]},{"id":209613,"attr1":4458,"attr2":66951,"neighbors":[209598,209600,209611,209620,209622,209623,209625]},{"id":209614,"attr1":7261,"attr2":45685,"neighbors":[209612,209609,209617,209619,209621,209768,209932]},{"id":209615,"attr1":1367,"attr2":96146,"neighbors":[209596,209598,209618,209620,209662,209664]},{"id":209616,"attr1":5186,"attr2":34241,"neighbors":[209617,209619,209758,209767,209755]},{"id":209617,"attr1":3819,"attr2":38813,"neighbors":[209614,209616,209619,209767,209768]},{"id":209618,"attr1":1998,"attr2":100814,"neighbors":[209615,209620,209648,209652,209662]},{"id":209619,"attr1":3481,"attr2":69856,"neighbors":[209568,209614,209616,209617,209621,209758,209755]},{"id":209620,"attr1":4299,"attr2":87087,"neighbors":[209598,209613,209615,209618,209622,209646,209648]},{"id":209621,"attr1":4566,"attr2":47130,"neighbors":[209568,209614,209619,209624,209932]},{"id":209622,"attr1":5670,"attr2":43076,"neighbors":[209613,209620,209623,209625,209644,209646,209648]},{"id":209623,"attr1":3338,"attr2":20993,"neighbors":[209613,209622,209625,209627,209631,209633,209642,209644]},{"id":209624,"attr1":4712,"attr2":60159,"neighbors":[209568,209581,209589,209621,209932]},{"id":209625,"attr1":6705,"attr2":32022,"neighbors":[209608,209611,209613,209622,209623,209627]},{"id":209626,"attr1":1843,"attr2":88068,"neighbors":[209630,209566,209568,209628,209755,209754]},{"id":209627,"attr1":3994,"attr2":31962,"neighbors":[209608,209611,209623,209625,209629,209631,209633]},{"id":209628,"attr1":3619,"attr2":37273,"neighbors":[209630,209566,209568,209626,209632]},{"id":209629,"attr1":8924,"attr2":33945,"neighbors":[209634,209378,209380,209604,209608,209627,209631,209930]},{"id":209630,"attr1":2539,"attr2":49395,"neighbors":[209626,209628,209632,209753,209757,209755,209754]},{"id":209631,"attr1":6905,"attr2":20931,"neighbors":[209634,209636,209608,209623,209627,209629,209633]},{"id":209632,"attr1":4227,"attr2":31004,"neighbors":[209630,209565,209566,209628,209757]},{"id":209633,"attr1":4326,"attr2":20044,"neighbors":[209634,209636,209623,209627,209631,209640,209642]},{"id":209634,"attr1":3392,"attr2":26346,"neighbors":[209319,209636,209629,209631,209633,209638,209930]},{"id":209635,"attr1":4265,"attr2":27192,"neighbors":[209753,209757,209641,209752,209639]},{"id":209636,"attr1":2638,"attr2":19602,"neighbors":[209634,209631,209633,209638,209640]},{"id":209637,"attr1":4719,"attr2":39468,"neighbors":[209532,209554,209649,209565,209757,209639,209647]},{"id":209638,"attr1":382,"attr2":92500,"neighbors":[209185,209187,209316,209319,209338,209634,209636,209640,209642]},{"id":209639,"attr1":2918,"attr2":44453,"neighbors":[209637,209645,209649,209757,209641,209635,209647]},{"id":209640,"attr1":7169,"attr2":16638,"neighbors":[209636,209633,209638,209642]},{"id":209641,"attr1":4457,"attr2":31868,"neighbors":[209643,209645,209752,209639,209635,209647]},{"id":209642,"attr1":5071,"attr2":39773,"neighbors":[209623,209633,209638,209640,209644]},{"id":209643,"attr1":2193,"attr2":58906,"neighbors":[209645,209656,209641,209654,209658,209702,209751,209752]},{"id":209644,"attr1":3480,"attr2":68043,"neighbors":[209622,209623,209642,209646]},{"id":209645,"attr1":3744,"attr2":42993,"neighbors":[209643,209656,209641,209654,209639,209647,209653]},{"id":209646,"attr1":6138,"attr2":63613,"neighbors":[209620,209622,209644,209648,209650]},{"id":209647,"attr1":3179,"attr2":41850,"neighbors":[209637,209645,209649,209641,209654,209651,209639,209653]},{"id":209648,"attr1":2899,"attr2":80909,"neighbors":[209618,209620,209622,209646,209650,209652]},{"id":209649,"attr1":4028,"attr2":51830,"neighbors":[209528,209530,209532,209637,209651,209639,209647,209653]},{"id":209650,"attr1":5178,"attr2":108190,"neighbors":[209646,209648,209652]},{"id":209651,"attr1":3591,"attr2":50066,"neighbors":[209505,209528,209530,209649,209673,209647,209672,209653]},{"id":209652,"attr1":2384,"attr2":92222,"neighbors":[209618,209648,209650,209655,209662]},{"id":209653,"attr1":2244,"attr2":53233,"neighbors":[209645,209649,209670,209654,209651,209647,209672]},{"id":209654,"attr1":3681,"attr2":45788,"neighbors":[209643,209645,209670,209656,209669,209647,209653]},{"id":209655,"attr1":3003,"attr2":80000,"neighbors":[209652,209659,209662,209664,209666,209668]},{"id":209656,"attr1":1519,"attr2":66250,"neighbors":[209643,209645,209667,209654,209658,209669]},{"id":209657,"attr1":4519,"attr2":66591,"neighbors":[209659,209668,209671]},{"id":209658,"attr1":2545,"attr2":71707,"neighbors":[209643,209660,209667,209656,209661,209700,209701,209702]},{"id":209659,"attr1":3125,"attr2":78445,"neighbors":[209655,209657,209668]},{"id":209660,"attr1":2747,"attr2":61779,"neighbors":[209667,209663,209658,209661]},{"id":209661,"attr1":1382,"attr2":79583,"neighbors":[209660,209698,209663,209658,209700]},{"id":209662,"attr1":1432,"attr2":71111,"neighbors":[209596,209615,209618,209652,209655,209664,209666]},{"id":209663,"attr1":3321,"attr2":57200,"neighbors":[209660,209667,209698,209697,209696,209661,209665,209683]},{"id":209664,"attr1":3886,"attr2":58553,"neighbors":[209596,209615,209655,209662,209666,209677,209679]},{"id":209665,"attr1":4954,"attr2":18459,"neighbors":[209696,209663,209683,209684]},{"id":209666,"attr1":2375,"attr2":70878,"neighbors":[209655,209662,209664,209668,209671,209677]},{"id":209667,"attr1":2881,"attr2":83295,"neighbors":[209660,209656,209663,209658,209669,209683]},{"id":209668,"attr1":4028,"attr2":79476,"neighbors":[209655,209657,209659,209666,209671]},{"id":209669,"attr1":3070,"attr2":68950,"neighbors":[209667,209670,209656,209654,209682,209683]},{"id":209670,"attr1":3260,"attr2":37953,"neighbors":[209675,209680,209654,209669,209682,209672,209653]},{"id":209671,"attr1":1016,"attr2":56500,"neighbors":[209657,209666,209668,209677]},{"id":209672,"attr1":3999,"attr2":40675,"neighbors":[209670,209673,209674,209675,209680,209651,209653]},{"id":209673,"attr1":3150,"attr2":43750,"neighbors":[209503,209505,209528,209674,209675,209651,209672]},{"id":209674,"attr1":3303,"attr2":58975,"neighbors":[209485,209501,209503,209673,209675,209676,209672,209678]},{"id":209675,"attr1":2658,"attr2":56797,"neighbors":[209670,209673,209674,209680,209672,209678]},{"id":209676,"attr1":3505,"attr2":61964,"neighbors":[209485,209501,209674,209687,209678]},{"id":209677,"attr1":1786,"attr2":82311,"neighbors":[209561,209664,209666,209671,209679,209681]},{"id":209678,"attr1":1893,"attr2":49792,"neighbors":[209674,209675,209680,209687,209686,209676]},{"id":209679,"attr1":3818,"attr2":76532,"neighbors":[209561,209577,209596,209664,209677,209681]},{"id":209680,"attr1":4599,"attr2":61164,"neighbors":[209670,209675,209687,209682,209686,209672,209678]},{"id":209681,"attr1":2036,"attr2":73021,"neighbors":[209561,209677,209679]},{"id":209682,"attr1":7740,"attr2":42067,"neighbors":[209670,209680,209669,209683,209684,209686]},{"id":209683,"attr1":4817,"attr2":68429,"neighbors":[209667,209663,209665,209669,209682,209684]},{"id":209684,"attr1":2451,"attr2":61422,"neighbors":[209685,209696,209665,209682,209683,209686]},{"id":209685,"attr1":3484,"attr2":63613,"neighbors":[209688,209695,209697,209696,209684,209686]},{"id":209686,"attr1":5984,"attr2":51845,"neighbors":[209685,209688,209695,209678,209680,209687,209682,209684]},{"id":209687,"attr1":2482,"attr2":29759,"neighbors":[209482,209485,209688,209680,209686,209676,209678]},{"id":209688,"attr1":3126,"attr2":50213,"neighbors":[209482,209485,209685,209690,209691,209692,209695,209687,209686,209694]},{"id":209689,"attr1":4282,"attr2":68750,"neighbors":[209466,209475,209477,209691,209693,209694]},{"id":209690,"attr1":1838,"attr2":45202,"neighbors":[209477,209479,209482,209688,209691]},{"id":209691,"attr1":6231,"attr2":23583,"neighbors":[209475,209477,209688,209689,209690,209692,209693,209694]},{"id":209692,"attr1":874,"attr2":63333,"neighbors":[209688,209691,209694]},{"id":209693,"attr1":1572,"attr2":103000,"neighbors":[209689,209691,209695,209694]},{"id":209694,"attr1":1891,"attr2":103929,"neighbors":[209688,209689,209691,209692,209695,209693]},{"id":209695,"attr1":3150,"attr2":52353,"neighbors":[209685,209688,209697,209686,209693,209694]},{"id":209696,"attr1":2670,"attr2":45547,"neighbors":[209685,209697,209663,209665,209684]},{"id":209697,"attr1":5130,"attr2":70260,"neighbors":[209685,209695,209698,209696,209663]},{"id":209698,"attr1":1458,"attr2":60139,"neighbors":[209697,209663,209661,209700]},{"id":209699,"attr1":1349,"attr2":93214,"neighbors":[209710,209709,209700,209701]},{"id":209700,"attr1":1649,"attr2":69405,"neighbors":[209698,209699,209658,209661,209701]},{"id":209701,"attr1":2017,"attr2":97241,"neighbors":[209699,209709,209658,209700,209702,209703,209704]},{"id":209702,"attr1":2434,"attr2":59732,"neighbors":[209643,209658,209701,209703,209746,209751,209752]},{"id":209703,"attr1":2814,"attr2":83125,"neighbors":[209701,209702,209704,209746]},{"id":209704,"attr1":2402,"attr2":89350,"neighbors":[209709,209705,209701,209703,209746]},{"id":209705,"attr1":1918,"attr2":63393,"neighbors":[209708,209707,209709,209706,209704,209746]},{"id":209706,"attr1":1322,"attr2":51339,"neighbors":[209716,209707,209717,209738,209705,209741,209742,209746]},{"id":209707,"attr1":1241,"attr2":95368,"neighbors":[209708,209716,209711,209712,209714,209715,209705,209706]},{"id":209708,"attr1":1765,"attr2":89750,"neighbors":[209707,209710,209711,209712,209709,209705]},{"id":209709,"attr1":1827,"attr2":82250,"neighbors":[209699,209708,209710,209705,209701,209704]},{"id":209710,"attr1":1954,"attr2":81932,"neighbors":[209699,209708,209711,209709]},{"id":209711,"attr1":2058,"attr2":87708,"neighbors":[209708,209707,209710,209712]},{"id":209712,"attr1":1729,"attr2":80893,"neighbors":[209708,209707,209711,209714,209727]},{"id":209714,"attr1":2763,"attr2":60857,"neighbors":[209707,209712,209715,209720,209721,209722,209727]},{"id":209715,"attr1":1699,"attr2":63571,"neighbors":[209707,209714,209717,209719,209720,209716]},{"id":209716,"attr1":1938,"attr2":81964,"neighbors":[209707,209715,209717,209738,209706]},{"id":209717,"attr1":2057,"attr2":75972,"neighbors":[209716,209715,209718,209719,209738,209706]},{"id":209718,"attr1":2392,"attr2":81847,"neighbors":[209733,209717,209719,209724,209737,209738]},{"id":209719,"attr1":2155,"attr2":69375,"neighbors":[209715,209717,209718,209720,209723,209724]},{"id":209720,"attr1":3037,"attr2":78875,"neighbors":[209714,209715,209719,209722,209723]},{"id":209721,"attr1":1660,"attr2":51800,"neighbors":[209714,209722,209727]},{"id":209722,"attr1":1863,"attr2":81750,"neighbors":[209714,209720,209721,209723,209726,209727]},{"id":209723,"attr1":1801,"attr2":78663,"neighbors":[209719,209720,209722,209724,209725,209726,209727]},{"id":209724,"attr1":2842,"attr2":84674,"neighbors":[209733,209718,209719,209723,209725]},{"id":209725,"attr1":4032,"attr2":53047,"neighbors":[209733,209723,209724,209726,209734,209841,209860]},{"id":209726,"attr1":6667,"attr2":89375,"neighbors":[209722,209723,209725,209727,209728,209729,209732,209860,209873]},{"id":209727,"attr1":1448,"attr2":73681,"neighbors":[209712,209714,209721,209722,209723,209726,209729]},{"id":209728,"attr1":1798,"attr2":66250,"neighbors":[209726,209732]},{"id":209729,"attr1":6015,"attr2":59655,"neighbors":[209726,209727,209732]},{"id":209732,"attr1":2748,"attr2":85515,"neighbors":[209726,209728,209729,209873]},{"id":209733,"attr1":1969,"attr2":63000,"neighbors":[209718,209724,209725,209734,209737,209738,209841,209860]},{"id":209734,"attr1":2896,"attr2":61286,"neighbors":[209733,209725,209735,209737,209736,209839,209841,209860]},{"id":209735,"attr1":2038,"attr2":76071,"neighbors":[209734,209834,209736,209838,209839]},{"id":209736,"attr1":2110,"attr2":82961,"neighbors":[209762,209734,209735,209737,209834,209739,209740,209791,209761]},{"id":209737,"attr1":4050,"attr2":67102,"neighbors":[209733,209718,209734,209738,209736,209739]},{"id":209738,"attr1":2550,"attr2":93462,"neighbors":[209716,209733,209717,209718,209737,209706,209739,209741]},{"id":209739,"attr1":2858,"attr2":74018,"neighbors":[209737,209738,209736,209740,209741]},{"id":209740,"attr1":2357,"attr2":84167,"neighbors":[209736,209739,209741,209743,209761]},{"id":209741,"attr1":3624,"attr2":60051,"neighbors":[209738,209706,209739,209740,209742,209743]},{"id":209742,"attr1":3583,"attr2":55714,"neighbors":[209745,209706,209741,209743,209746]},{"id":209743,"attr1":4264,"attr2":60170,"neighbors":[209745,209740,209741,209742,209744,209761]},{"id":209744,"attr1":3590,"attr2":75952,"neighbors":[209745,209748,209760,209743,209747,209761]},{"id":209745,"attr1":2500,"attr2":102125,"neighbors":[209742,209743,209744,209746,209747]},{"id":209746,"attr1":2278,"attr2":82188,"neighbors":[209745,209705,209706,209702,209703,209704,209742,209747,209751]},{"id":209747,"attr1":1906,"attr2":61667,"neighbors":[209744,209746,209750,209751,209745,209748]},{"id":209748,"attr1":2888,"attr2":52774,"neighbors":[209759,209760,209744,209747,209749,209750]},{"id":209749,"attr1":1021,"attr2":111429,"neighbors":[209748,209753,209759,209750,209754]},{"id":209750,"attr1":1573,"attr2":86389,"neighbors":[209748,209753,209747,209749,209751,209752]},{"id":209751,"attr1":1971,"attr2":62935,"neighbors":[209643,209702,209746,209747,209750,209752]},{"id":209752,"attr1":1841,"attr2":84044,"neighbors":[209643,209753,209641,209702,209750,209751,209635]},{"id":209753,"attr1":3013,"attr2":41364,"neighbors":[209630,209757,209749,209750,209752,209635,209754]},{"id":209754,"attr1":4875,"attr2":46667,"neighbors":[209630,209626,209753,209757,209759,209749,209755]},{"id":209755,"attr1":4070,"attr2":47364,"neighbors":[209630,209568,209616,209619,209626,209756,209758,209759,209754]},{"id":209756,"attr1":2467,"attr2":59926,"neighbors":[209758,209759,209755]},{"id":209757,"attr1":3308,"attr2":44858,"neighbors":[209554,209637,209630,209565,209632,209753,209639,209635,209754]},{"id":209758,"attr1":3302,"attr2":54732,"neighbors":[209616,209619,209756,209759,209760,209766,209767,209765,209755]},{"id":209759,"attr1":2917,"attr2":61117,"neighbors":[209748,209756,209758,209760,209749,209755,209754]},{"id":209760,"attr1":3333,"attr2":49125,"neighbors":[209748,209758,209759,209744,209761,209765]},{"id":209761,"attr1":3956,"attr2":62529,"neighbors":[209760,209762,209764,209736,209740,209743,209744,209765]},{"id":209762,"attr1":2586,"attr2":81299,"neighbors":[209764,209736,209791,209761,209763]},{"id":209763,"attr1":4685,"attr2":51975,"neighbors":[209762,209764,209766,209791,209765,209788,209789,209790]},{"id":209764,"attr1":2806,"attr2":93176,"neighbors":[209762,209766,209761,209763,209765]},{"id":209765,"attr1":4893,"attr2":42482,"neighbors":[209758,209760,209764,209766,209761,209763]},{"id":209766,"attr1":3237,"attr2":40188,"neighbors":[209758,209764,209767,209787,209763,209765,209788]},{"id":209767,"attr1":5288,"attr2":47500,"neighbors":[209616,209617,209758,209766,209768,209787,209786]},{"id":209768,"attr1":3771,"attr2":37295,"neighbors":[209609,209614,209617,209767,209769,209785,209787,209786]},{"id":209769,"attr1":1964,"attr2":45227,"neighbors":[209610,209605,209609,209768,209785,209783,209786,209771,209784]},{"id":209770,"attr1":4728,"attr2":46450,"neighbors":[209606,209772,209773,209775,209771,209784]},{"id":209771,"attr1":4642,"attr2":38227,"neighbors":[209606,209610,209605,209769,209770,209784]},{"id":209772,"attr1":2886,"attr2":61250,"neighbors":[209446,209773,209774,209775,209770]},{"id":209773,"attr1":5956,"attr2":53221,"neighbors":[209606,209772,209446,209607,209770]},{"id":209774,"attr1":3797,"attr2":55833,"neighbors":[209772,209446,209775,209448,209776]},{"id":209775,"attr1":5031,"attr2":41607,"neighbors":[209772,209774,209776,209783,209770,209784]},{"id":209776,"attr1":3282,"attr2":31941,"neighbors":[209448,209777,209778,209781,209782,209783,209774,209775,209779]},{"id":209777,"attr1":4241,"attr2":39194,"neighbors":[209450,209779,209808,209448,209776]},{"id":209778,"attr1":1256,"attr2":9829,"neighbors":[209779,209808,209809,209805,209810,209806,209807,209776,209780,209781,209782]},{"id":209779,"attr1":2194,"attr2":40698,"neighbors":[209808,209776,209777,209778]},{"id":209780,"attr1":2801,"attr2":48415,"neighbors":[209800,209807,209778,209781]},{"id":209781,"attr1":2852,"attr2":45125,"neighbors":[209800,209776,209778,209780,209782,209799]},{"id":209782,"attr1":4409,"attr2":44954,"neighbors":[209785,209776,209778,209781,209783,209799]},{"id":209783,"attr1":4856,"attr2":36472,"neighbors":[209775,209776,209782,209769,209785,209784]},{"id":209784,"attr1":7608,"attr2":38997,"neighbors":[209775,209783,209769,209785,209770,209771]},{"id":209785,"attr1":4323,"attr2":44432,"neighbors":[209768,209769,209782,209783,209786,209799,209784]},{"id":209786,"attr1":4880,"attr2":44120,"neighbors":[209767,209768,209769,209785,209787,209788,209798,209799]},{"id":209787,"attr1":3627,"attr2":47269,"neighbors":[209766,209767,209768,209786,209788]},{"id":209788,"attr1":6023,"attr2":45598,"neighbors":[209766,209787,209763,209786,209789,209798]},{"id":209789,"attr1":2341,"attr2":62083,"neighbors":[209763,209788,209790,209798]},{"id":209790,"attr1":1654,"attr2":57708,"neighbors":[209792,209791,209796,209763,209789,209798]},{"id":209791,"attr1":2005,"attr2":58068,"neighbors":[209762,209792,209793,209834,209736,209763,209790]},{"id":209792,"attr1":2407,"attr2":66618,"neighbors":[209793,209834,209791,209796,209790,209798]},{"id":209793,"attr1":2267,"attr2":51331,"neighbors":[209792,209794,209795,209834,209791,209796]},{"id":209794,"attr1":1704,"attr2":48182,"neighbors":[209793,209795,209834,209796,209838,209840]},{"id":209795,"attr1":1609,"attr2":52232,"neighbors":[209793,209794,209802,209837,209796,209801,209840]},{"id":209796,"attr1":1600,"attr2":75417,"neighbors":[209792,209793,209794,209795,209802,209801,209790,209798]},{"id":209798,"attr1":1941,"attr2":39819,"neighbors":[209792,209796,209786,209788,209789,209790,209799]},{"id":209799,"attr1":3290,"attr2":52554,"neighbors":[209785,209800,209781,209782,209786,209798]},{"id":209800,"attr1":2378,"attr2":52083,"neighbors":[209801,209807,209780,209781,209799]},{"id":209801,"attr1":3691,"attr2":42270,"neighbors":[209800,209805,209795,209802,209796,209806,209807]},{"id":209802,"attr1":3003,"attr2":44018,"neighbors":[209805,209795,209804,209837,209796,209801,209840]},{"id":209803,"attr1":2203,"attr2":42794,"neighbors":[209814,209804,209812,209815,209835,209836,209837]},{"id":209804,"attr1":3175,"attr2":46438,"neighbors":[209805,209802,209803,209810,209811,209812,209837]},{"id":209805,"attr1":3118,"attr2":47679,"neighbors":[209802,209804,209810,209801,209806,209778]},{"id":209806,"attr1":3187,"attr2":33750,"neighbors":[209805,209801,209807,209778]},{"id":209807,"attr1":2726,"attr2":42891,"neighbors":[209800,209801,209806,209778,209780]},{"id":209808,"attr1":3122,"attr2":30150,"neighbors":[209450,209469,209779,209809,209777,209778]},{"id":209809,"attr1":1693,"attr2":40109,"neighbors":[209450,209469,209808,209810,209811,209778]},{"id":209810,"attr1":2816,"attr2":40208,"neighbors":[209809,209805,209804,209811,209778]},{"id":209811,"attr1":3208,"attr2":51827,"neighbors":[209469,209809,209804,209810,209812]},{"id":209812,"attr1":6660,"attr2":46750,"neighbors":[209469,209472,209814,209803,209804,209811,209813]},{"id":209813,"attr1":4923,"attr2":37853,"neighbors":[209472,209814,209812,209817]},{"id":209814,"attr1":4472,"attr2":45208,"neighbors":[209816,209803,209812,209813,209815,209817]},{"id":209815,"attr1":4274,"attr2":43046,"neighbors":[209814,209816,209832,209803,209833,209835,209836]},{"id":209816,"attr1":6750,"attr2":28688,"neighbors":[209814,209818,209827,209832,209815,209817,209819,209830]},{"id":209817,"attr1":3651,"attr2":25350,"neighbors":[209472,209473,209814,209816,209818,209813,209821]},{"id":209818,"attr1":3751,"attr2":43159,"neighbors":[209816,209822,209817,209819,209820,209821]},{"id":209819,"attr1":3411,"attr2":34482,"neighbors":[209816,209818,209827,209820,209830]},{"id":209820,"attr1":1777,"attr2":38988,"neighbors":[209818,209822,209827,209831,209819,209821]},{"id":209821,"attr1":5358,"attr2":27716,"neighbors":[209472,209473,209476,209818,209822,209817,209820]},{"id":209822,"attr1":3886,"attr2":42734,"neighbors":[209476,209478,209818,209831,209820,209821]},{"id":209823,"attr1":4318,"attr2":15674,"neighbors":[209478,209481,209824,209825,209831,209826]},{"id":209824,"attr1":5679,"attr2":12863,"neighbors":[209481,209823,209825,209892,209895,209826]},{"id":209825,"attr1":6094,"attr2":10746,"neighbors":[209823,209824,209828,209892,209826,209891]},{"id":209826,"attr1":6627,"attr2":20360,"neighbors":[209823,209824,209825,209827,209828,209831]},{"id":209827,"attr1":4790,"attr2":31105,"neighbors":[209816,209828,209831,209819,209820,209826,209829,209830]},{"id":209828,"attr1":3058,"attr2":27500,"neighbors":[209825,209827,209831,209826,209829,209891]},{"id":209829,"attr1":3406,"attr2":32292,"neighbors":[209827,209828,209830,209879,209891]},{"id":209830,"attr1":2880,"attr2":39485,"neighbors":[209816,209827,209832,209819,209829,209879]},{"id":209831,"attr1":3420,"attr2":37266,"neighbors":[209478,209822,209823,209827,209828,209820,209826]},{"id":209832,"attr1":2680,"attr2":45762,"neighbors":[209816,209815,209830,209833,209879]},{"id":209833,"attr1":2581,"attr2":56014,"neighbors":[209832,209815,209835]},{"id":209834,"attr1":1336,"attr2":83500,"neighbors":[209792,209793,209735,209794,209736,209791,209838]},{"id":209835,"attr1":2464,"attr2":51648,"neighbors":[209803,209815,209833,209836,209840]},{"id":209836,"attr1":1882,"attr2":71964,"neighbors":[209803,209815,209835,209837,209840]},{"id":209837,"attr1":2196,"attr2":34018,"neighbors":[209795,209802,209803,209804,209836,209840]},{"id":209838,"attr1":3916,"attr2":66167,"neighbors":[209735,209794,209834,209839,209840,209841]},{"id":209839,"attr1":2907,"attr2":23417,"neighbors":[209734,209735,209838,209841]},{"id":209840,"attr1":1990,"attr2":60950,"neighbors":[209794,209795,209802,209835,209836,209837,209838]},{"id":209841,"attr1":3236,"attr2":68854,"neighbors":[209733,209842,209725,209734,209838,209839,209843,209860]},{"id":209842,"attr1":4852,"attr2":72610,"neighbors":[209841,209843,209844]},{"id":209843,"attr1":4618,"attr2":65459,"neighbors":[209842,209841,209844,209847,209848,209858,209859,209860]},{"id":209844,"attr1":3840,"attr2":62431,"neighbors":[209842,209843,209846,209847,209848]},{"id":209846,"attr1":1828,"attr2":64750,"neighbors":[209844,209847,209849,209850]},{"id":209847,"attr1":2212,"attr2":51631,"neighbors":[209843,209844,209846,209848,209849,209850]},{"id":209848,"attr1":2359,"attr2":70625,"neighbors":[209843,209844,209847,209849,209851,209855,209856,209857,209858]},{"id":209849,"attr1":1481,"attr2":62250,"neighbors":[209846,209847,209848,209850,209851,209855,209879]},{"id":209850,"attr1":2186,"attr2":81548,"neighbors":[209846,209847,209849,209851,209879]},{"id":209851,"attr1":3142,"attr2":56992,"neighbors":[209848,209849,209850,209852,209854,209855,209879]},{"id":209852,"attr1":4124,"attr2":19720,"neighbors":[209851,209853,209854,209868,209876,209879,209880]},{"id":209853,"attr1":2035,"attr2":71146,"neighbors":[209852,209854,209866,209867,209868]},{"id":209854,"attr1":3362,"attr2":69375,"neighbors":[209851,209852,209853,209855,209865,209866,209867]},{"id":209855,"attr1":3117,"attr2":59348,"neighbors":[209848,209849,209851,209854,209856,209865,209866]},{"id":209856,"attr1":1552,"attr2":75208,"neighbors":[209848,209855,209857,209863,209864,209865]},{"id":209857,"attr1":2103,"attr2":66964,"neighbors":[209848,209856,209858,209862,209863,209864]},{"id":209858,"attr1":2023,"attr2":64043,"neighbors":[209843,209848,209857,209859,209861,209862,209863]},{"id":209859,"attr1":3819,"attr2":64375,"neighbors":[209843,209858,209860,209861,209862]},{"id":209860,"attr1":3702,"attr2":72143,"neighbors":[209733,209725,209726,209734,209841,209843,209859,209861,209872,209873]},{"id":209861,"attr1":2831,"attr2":66105,"neighbors":[209858,209859,209860,209862,209872]},{"id":209862,"attr1":2561,"attr2":65096,"neighbors":[209857,209858,209859,209861,209863,209872]},{"id":209863,"attr1":2138,"attr2":60446,"neighbors":[209856,209857,209858,209862,209864,209871,209872]},{"id":209864,"attr1":2042,"attr2":59840,"neighbors":[209856,209857,209863,209865,209870,209871]},{"id":209865,"attr1":2144,"attr2":64760,"neighbors":[209854,209855,209856,209864,209866,209869,209870]},{"id":209866,"attr1":2240,"attr2":60969,"neighbors":[209853,209854,209855,209865,209867,209868,209869,209870]},{"id":209867,"attr1":1594,"attr2":98208,"neighbors":[209853,209854,209866,209868,209869]},{"id":209868,"attr1":1718,"attr2":73667,"neighbors":[209852,209853,209866,209867,209869,209874,209876]},{"id":209869,"attr1":2132,"attr2":84563,"neighbors":[209865,209866,209867,209868,209870,209874]},{"id":209870,"attr1":2205,"attr2":57143,"neighbors":[209864,209865,209866,209869,209871,209873,209874]},{"id":209871,"attr1":2110,"attr2":74009,"neighbors":[209863,209864,209870,209872,209873,209874]},{"id":209872,"attr1":2508,"attr2":67955,"neighbors":[209860,209861,209862,209863,209871,209873]},{"id":209873,"attr1":1529,"attr2":62216,"neighbors":[209726,209732,209860,209870,209871,209872,209874]},{"id":209874,"attr1":4029,"attr2":18158,"neighbors":[209868,209869,209870,209871,209873,209876,209877]},{"id":209875,"attr1":6403,"attr2":25276,"neighbors":[209876,209877,209878,209880]},{"id":209876,"attr1":6416,"attr2":27649,"neighbors":[209852,209868,209874,209875,209877,209880]},{"id":209877,"attr1":1141,"attr2":77768,"neighbors":[209874,209875,209876,209878,209929]},{"id":209878,"attr1":3988,"attr2":59455,"neighbors":[209881,209882,209875,209877,209880,209883,209929]},{"id":209879,"attr1":2160,"attr2":43664,"neighbors":[209832,209829,209830,209849,209850,209851,209852,209880,209891]},{"id":209880,"attr1":4948,"attr2":44063,"neighbors":[209881,209890,209882,209852,209875,209876,209878,209879,209883,209885,209886,209889,209891]},{"id":209881,"attr1":4438,"attr2":24564,"neighbors":[209882,209878,209880]},{"id":209882,"attr1":3400,"attr2":16716,"neighbors":[209881,209878,209880,209883]},{"id":209883,"attr1":3739,"attr2":36175,"neighbors":[209927,209884,209882,209878,209880,209885,209886,209929]},{"id":209884,"attr1":2986,"attr2":33160,"neighbors":[209927,209903,209921,209883,209885]},{"id":209885,"attr1":3221,"attr2":21507,"neighbors":[209884,209902,209903,209880,209883,209886,209887]},{"id":209886,"attr1":3755,"attr2":30987,"neighbors":[209880,209883,209885,209887,209888,209889]},{"id":209887,"attr1":3399,"attr2":40707,"neighbors":[209900,209901,209902,209885,209886,209888,209889]},{"id":209888,"attr1":3826,"attr2":40323,"neighbors":[209900,209890,209899,209886,209887,209889]},{"id":209889,"attr1":3829,"attr2":34028,"neighbors":[209890,209880,209886,209887,209888]},{"id":209890,"attr1":4386,"attr2":29038,"neighbors":[209892,209899,209880,209888,209889,209891]},{"id":209891,"attr1":1917,"attr2":49250,"neighbors":[209825,209828,209890,209892,209829,209879,209880]},{"id":209892,"attr1":3107,"attr2":19205,"neighbors":[209824,209825,209890,209895,209899,209891]},{"id":209893,"attr1":1748,"attr2":45682,"neighbors":[209483,209516,209894,209895,209896,209923]},{"id":209894,"attr1":2656,"attr2":41352,"neighbors":[209893,209896,209907]},{"id":209895,"attr1":2587,"attr2":26429,"neighbors":[209900,209481,209483,209824,209892,209893,209898,209899,209923]},{"id":209896,"attr1":3119,"attr2":30101,"neighbors":[209893,209894,209906,209907,209923]},{"id":209897,"attr1":2776,"attr2":40104,"neighbors":[209898,209901,209902,209903,209904,209906,209923]},{"id":209898,"attr1":3213,"attr2":32500,"neighbors":[209900,209895,209897,209901,209923]},{"id":209899,"attr1":4154,"attr2":15854,"neighbors":[209900,209890,209892,209895,209888]},{"id":209900,"attr1":2938,"attr2":44142,"neighbors":[209895,209898,209899,209901,209887,209888]},{"id":209901,"attr1":2139,"attr2":26745,"neighbors":[209900,209897,209898,209902,209887]},{"id":209902,"attr1":2073,"attr2":42829,"neighbors":[209897,209901,209903,209904,209885,209887]},{"id":209903,"attr1":3104,"attr2":40357,"neighbors":[209884,209897,209902,209904,209921,209885]},{"id":209904,"attr1":2865,"attr2":33892,"neighbors":[209897,209902,209903,209905,209906,209920,209921]},{"id":209905,"attr1":1579,"attr2":31983,"neighbors":[209904,209906,209907,209908,209909,209920]},{"id":209906,"attr1":1606,"attr2":35889,"neighbors":[209896,209897,209904,209905,209907,209923]},{"id":209907,"attr1":2536,"attr2":51042,"neighbors":[209894,209896,209905,209906,209908,209923]},{"id":209908,"attr1":3121,"attr2":52260,"neighbors":[209905,209907,209909]},{"id":209909,"attr1":4268,"attr2":53549,"neighbors":[209905,209908,209910,209912,209920]},{"id":209910,"attr1":3037,"attr2":44088,"neighbors":[209909,209911,209912]},{"id":209911,"attr1":2800,"attr2":28304,"neighbors":[209910,209912,209914,209916]},{"id":209912,"attr1":1665,"attr2":36061,"neighbors":[209909,209910,209911,209916,209917,209919,209920]},{"id":209914,"attr1":3054,"attr2":42301,"neighbors":[209911,209915,209916]},{"id":209915,"attr1":2765,"attr2":46048,"neighbors":[209914,209916]},{"id":209916,"attr1":5428,"attr2":50319,"neighbors":[209911,209912,209914,209915,209917]},{"id":209917,"attr1":2790,"attr2":41471,"neighbors":[209912,209916,209918,209919]},{"id":209918,"attr1":4519,"attr2":30699,"neighbors":[209917,209919,209925]},{"id":209919,"attr1":2611,"attr2":30565,"neighbors":[209912,209917,209918,209920,209922,209924,209925]},{"id":209920,"attr1":3231,"attr2":43182,"neighbors":[209904,209905,209909,209912,209919,209921,209922]},{"id":209921,"attr1":3626,"attr2":32136,"neighbors":[209927,209884,209903,209904,209920,209922]},{"id":209922,"attr1":4864,"attr2":32115,"neighbors":[209927,209919,209920,209921,209924,209926]},{"id":209923,"attr1":3538,"attr2":31225,"neighbors":[209483,209893,209895,209896,209897,209898,209906,209907]},{"id":209924,"attr1":2230,"attr2":32468,"neighbors":[209919,209922,209925,209926]},{"id":209925,"attr1":2057,"attr2":47206,"neighbors":[209918,209919,209924,209926]},{"id":209926,"attr1":8566,"attr2":32269,"neighbors":[209927,209922,209924,209925,209928,209929]},{"id":209927,"attr1":4258,"attr2":17139,"neighbors":[209884,209921,209922,209926,209883,209929]},{"id":209928,"attr1":4465,"attr2":19264,"neighbors":[209926,209929]},{"id":209929,"attr1":5573,"attr2":43125,"neighbors":[209927,209926,209928,209877,209878,209883]},{"id":209930,"attr1":6522,"attr2":30035,"neighbors":[209319,209321,209634,209378,209629,209360,209364,209376]},{"id":209931,"attr1":2946,"attr2":100813,"neighbors":[209299,209279,209281,209599,209301,209597,209601]},{"id":209932,"attr1":3755,"attr2":81618,"neighbors":[209603,209612,209589,209601,209614,209621,209624]}],"time":0.415,"fields":{"id":{"type":"number"},"attr1":{"type":"number"},"attr2":{"type":"number"},"neighbors":{"type":"number[]"}},"total_rows":748} \ No newline at end of file diff --git a/src/py/crankshaft/test/test_clustering_maxp.py b/src/py/crankshaft/test/test_clustering_maxp.py new file mode 100644 index 0000000..039f527 --- /dev/null +++ b/src/py/crankshaft/test/test_clustering_maxp.py @@ -0,0 +1,62 @@ +import unittest +import numpy as np + + +# from mock_plpy import MockPlPy +# plpy = MockPlPy() +# +# import sys +# sys.modules['plpy'] = plpy +from helper import fixture_file +from crankshaft.clustering import MaxP +from crankshaft.analysis_data_provider import AnalysisDataProvider +import crankshaft.clustering as cc + +from crankshaft import random_seeds +import json +from collections import OrderedDict + + +class FakeDataProvider(AnalysisDataProvider): + def __init__(self, fixturedata): + self.your_maxp_data = fixturedata + + def get_maxp(self, params): + """ + Replace this function name with the one used in your algorithm, + and make sure to use the same function signature that is written + for this algo in analysis_data_provider.py + """ + return self.your_maxp_data + +class MaxPTest(unittest.TestCase): + """Testing class for max-p regionalization""" + + def setUp(self): + self.neighbor_data = json.loads( + open(fixture_file('maxp.json')).read()) + self.neighbor_data = self.neighbor_data['rows'] + self.params = {"subquery": "select * from fake_table", + "colnames": ['population','median_hh_income'], + "floor_variable": 'population', + "floor": 260000} + + def test_maxp(self): + """ + """ + data = [{'id': d['id'], + 'attr1': d['attr1'], + 'attr2':d['attr2'], + 'neighbors': d['neighbors']} for d in self.neighbor_data] + + random_seeds.set_random_seeds(1234) + maxp = MaxP(FakeDataProvider(data)) + regions = maxp.maxp('select * from research_nothing',['population','median_hh_income'],floor_variable='population',floor=260000) + region_labels = [a[0] for a in regions] + data_regionalized = zip(data,region_labels) + for i in set(region_labels): + sum_pop = 0 + for n in data_regionalized: + if n[1] == i: + sum_pop += n[0]['attr1'] + self.assertGreaterEqual(sum_pop, 260000)