From 3685b885df02feec2d85c1479b38e1b0c6af37ae Mon Sep 17 00:00:00 2001 From: mehak-sachdeva Date: Fri, 10 Mar 2017 11:50:29 -0500 Subject: [PATCH] adding spatial lag function, tests and changing data provider name in moran test --- src/py/crankshaft/test/fixtures/lag_data.json | 1 + .../crankshaft/test/fixtures/lag_result.json | 1 + .../crankshaft/test/test_clustering_moran.py | 2 +- src/py/crankshaft/test/test_spatial_lag.py | 50 +++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/py/crankshaft/test/fixtures/lag_data.json create mode 100644 src/py/crankshaft/test/fixtures/lag_result.json create mode 100644 src/py/crankshaft/test/test_spatial_lag.py diff --git a/src/py/crankshaft/test/fixtures/lag_data.json b/src/py/crankshaft/test/fixtures/lag_data.json new file mode 100644 index 0000000..4bb1727 --- /dev/null +++ b/src/py/crankshaft/test/fixtures/lag_data.json @@ -0,0 +1 @@ +[{"neighbors": [4, 6, 7, 8, 9], "id": 3, "value": 0.58148431522570809}, {"neighbors": [3, 6, 7, 8, 9], "id": 4, "value": 0.62010297738974707}, {"neighbors": [7, 8, 4, 3, 9], "id": 6, "value": 0.95738793580520198}, {"neighbors": [8, 6, 9, 4, 10], "id": 7, "value": 0.32213575017239698}, {"neighbors": [7, 6, 9, 11, 10], "id": 8, "value": 0.72424761438708096}, {"neighbors": [10, 8, 7, 11, 12], "id": 9, "value": 0.37197686645636208}, {"neighbors": [9, 11, 12, 8, 13], "id": 10, "value": 0.38292052879501598}, {"neighbors": [12, 13, 9, 10, 8], "id": 11, "value": 0.56819579387529207}, {"neighbors": [11, 13, 14, 15, 10], "id": 12, "value": 1.1113600717006498}, {"neighbors": [14, 12, 15, 11, 16], "id": 13, "value": 0.36278195488721793}, {"neighbors": [13, 15, 12, 16, 17], "id": 14, "value": 0.84469571000997712}, {"neighbors": [14, 16, 13, 17, 12], "id": 15, "value": 0.14148396155092302}, {"neighbors": [17, 15, 18, 14, 19], "id": 16, "value": 0.99686520376175503}, {"neighbors": [16, 18, 15, 19, 14], "id": 17, "value": 39.395973154362395}, {"neighbors": [19, 17, 20, 16, 21], "id": 18, "value": 0.63921789810114693}, {"neighbors": [18, 20, 21, 17, 22], "id": 19, "value": 0.48078175895765507}, {"neighbors": [19, 21, 22, 18, 17], "id": 20, "value": 0.73347745521927099}, {"neighbors": [22, 20, 19, 23, 18], "id": 21, "value": 0.31972519487382695}, {"neighbors": [21, 24, 20, 23, 19], "id": 22, "value": 1.11407249466951}, {"neighbors": [22, 24, 21, 25, 26], "id": 23, "value": 1.77398720682303}, {"neighbors": [25, 22, 26, 23, 21], "id": 24, "value": 0.48365352207617102}, {"neighbors": [24, 26, 27, 22, 23], "id": 25, "value": 1.2292002147074599}, {"neighbors": [27, 25, 24, 28, 29], "id": 26, "value": 1.22764474083055}, {"neighbors": [26, 28, 29, 25, 30], "id": 27, "value": 0.14314928425357901}, {"neighbors": [27, 29, 26, 30, 31], "id": 28, "value": 0.33678330869065193}, {"neighbors": [30, 27, 31, 28, 26], "id": 29, "value": 3.4326018808777405}, {"neighbors": [29, 31, 32, 28, 27], "id": 30, "value": 0.24659590436367501}, {"neighbors": [32, 30, 33, 29, 34], "id": 31, "value": 13.8675958188153}, {"neighbors": [31, 33, 34, 30, 35], "id": 32, "value": 0.68720379146919397}, {"neighbors": [32, 34, 31, 35, 36], "id": 33, "value": 1.2723141837065901}, {"neighbors": [35, 33, 36, 32, 37], "id": 34, "value": 1.1443433029908998}, {"neighbors": [36, 34, 37, 33, 38], "id": 35, "value": 0.120432321152856}, {"neighbors": [37, 35, 34, 38, 33], "id": 36, "value": 2.9392971246006399}, {"neighbors": [36, 38, 35, 39, 34], "id": 37, "value": 3.7398373983739801}, {"neighbors": [37, 39, 36, 40, 41], "id": 38, "value": 0.40715829930338704}, {"neighbors": [38, 40, 41, 37, 36], "id": 39, "value": 4.0909090909090899}, {"neighbors": [41, 39, 42, 38, 43], "id": 40, "value": 0.105942329138123}, {"neighbors": [42, 40, 43, 39, 44], "id": 41, "value": 0.97537186052182401}, {"neighbors": [43, 41, 40, 44, 45], "id": 42, "value": 0.130994152046784}, {"neighbors": [42, 44, 41, 45, 40], "id": 43, "value": 0.29765258215962392}, {"neighbors": [45, 43, 42, 46, 41], "id": 44, "value": 0.59787849566055895}, {"neighbors": [44, 46, 43, 42, 48], "id": 45, "value": 0.290677674578603}, {"neighbors": [45, 44, 48, 43, 49], "id": 46, "value": 0.80806213017751505}, {"neighbors": [48, 45, 46, 49, 50], "id": 47, "value": 0.70368961582350698}, {"neighbors": [49, 47, 50, 46, 51], "id": 48, "value": 0.58741258741258706}, {"neighbors": [50, 48, 51, 46, 52], "id": 49, "value": 0.38535911602209905}, {"neighbors": [51, 49, 52, 48, 53], "id": 50, "value": 0.84658187599364099}, {"neighbors": [50, 52, 53, 49, 54], "id": 51, "value": 1.3113673805601298}, {"neighbors": [51, 53, 50, 54, 55], "id": 52, "value": 0.566552901023891}, {"neighbors": [52, 54, 51, 55, 50], "id": 53, "value": 1.0437556973564299}, {"neighbors": [53, 55, 52, 56, 51], "id": 54, "value": 2.4606192286800601}, {"neighbors": [56, 54, 57, 53, 58], "id": 55, "value": 0.62338668043365997}, {"neighbors": [57, 55, 58, 54, 53], "id": 56, "value": 0.38764871006549895}, {"neighbors": [58, 56, 55, 59, 60], "id": 57, "value": 0.41643428146495604}, {"neighbors": [57, 59, 56, 60, 61], "id": 58, "value": 1.36216216216216}, {"neighbors": [60, 58, 61, 57, 62], "id": 59, "value": 0.34758771929824606}, {"neighbors": [59, 61, 62, 58, 63], "id": 60, "value": 0.58476881233000899}, {"neighbors": [60, 62, 63, 59, 64], "id": 61, "value": 0.22236180904522601}, {"neighbors": [63, 61, 64, 60, 59], "id": 62, "value": 0.158900836320191}, {"neighbors": [62, 64, 65, 61, 60], "id": 63, "value": 1.8778801843318}, {"neighbors": [63, 65, 62, 66, 61], "id": 64, "value": 1.18672905146746}, {"neighbors": [64, 66, 63, 67, 62], "id": 65, "value": 0.41823308270676701}, {"neighbors": [65, 67, 64, 68, 63], "id": 66, "value": 0.73474224767924201}, {"neighbors": [68, 66, 65, 69, 64], "id": 67, "value": 0.56285458345774908}, {"neighbors": [67, 69, 70, 66, 71], "id": 68, "value": 2.6002971768202099}, {"neighbors": [68, 70, 67, 71, 72], "id": 69, "value": 0.52673111067271594}, {"neighbors": [71, 69, 68, 72, 73], "id": 70, "value": 0.13051359516616301}, {"neighbors": [72, 70, 73, 69, 68], "id": 71, "value": 11.236559139784902}, {"neighbors": [71, 73, 70, 74, 75], "id": 72, "value": 0.47261269995152705}, {"neighbors": [74, 72, 75, 71, 70], "id": 73, "value": 1.58679017317761}, {"neighbors": [75, 73, 72, 76, 77], "id": 74, "value": 0.60289141802522306}, {"neighbors": [74, 76, 73, 77, 72], "id": 75, "value": 2.1228813559322002}, {"neighbors": [75, 77, 74, 78, 79], "id": 76, "value": 1.0808534531162299}, {"neighbors": [78, 76, 75, 79, 80], "id": 77, "value": 0.544280442804428}, {"neighbors": [77, 79, 80, 76, 81], "id": 78, "value": 1.1473851030110902}, {"neighbors": [80, 78, 77, 81, 82], "id": 79, "value": 0.11727416798732199}, {"neighbors": [79, 81, 78, 82, 77], "id": 80, "value": 0.62660944206008606}, {"neighbors": [80, 82, 83, 79, 78], "id": 81, "value": 0.96716721812166007}, {"neighbors": [83, 81, 80, 84, 85], "id": 82, "value": 0.7054057829305771}, {"neighbors": [82, 84, 81, 85, 80], "id": 83, "value": 0.16935954837453801}, {"neighbors": [85, 83, 82, 87, 81], "id": 84, "value": 0.35433070866141708}, {"neighbors": [84, 83, 87, 82, 88], "id": 85, "value": 1.2487343908201101}, {"neighbors": [88, 89, 85, 90, 84], "id": 87, "value": 1.2327799364182299}, {"neighbors": [89, 87, 90, 91, 85], "id": 88, "value": 0.75842155919153009}, {"neighbors": [88, 90, 91, 87, 92], "id": 89, "value": 0.56993464052287601}, {"neighbors": [91, 89, 88, 92, 87], "id": 90, "value": 0.27398523985239898}, {"neighbors": [90, 92, 89, 88, 94], "id": 91, "value": 1.76741803278689}, {"neighbors": [91, 90, 94, 93, 89], "id": 92, "value": 0.091823349365981605}, {"neighbors": [92, 94, 91, 96, 90], "id": 93, "value": 0.14102415905675597}, {"neighbors": [92, 96, 93, 91, 98], "id": 94, "value": 0.355239786856128}, {"neighbors": [115, 97, 113, 103, 109], "id": 95, "value": 0.533447265625}, {"neighbors": [98, 94, 99, 93, 100], "id": 96, "value": 0.12969117289454499}, {"neighbors": [115, 103, 113, 109, 101], "id": 97, "value": 0.57331714555510593}, {"neighbors": [99, 100, 96, 94, 101], "id": 98, "value": 1.7866549604916599}, {"neighbors": [98, 100, 96, 101, 102], "id": 99, "value": 0.22216643655077201}, {"neighbors": [99, 98, 101, 102, 96], "id": 100, "value": 0.50559380378657504}, {"neighbors": [102, 100, 104, 99, 105], "id": 101, "value": 0.34536702767749705}, {"neighbors": [101, 104, 100, 105, 99], "id": 102, "value": 0.63460495389622107}, {"neighbors": [109, 105, 101, 102, 113], "id": 103, "value": 0.44926863245878795}, {"neighbors": [105, 102, 106, 101, 107], "id": 104, "value": 0.28172464478196996}, {"neighbors": [104, 102, 106, 107, 101], "id": 105, "value": 0.64286621776140296}, {"neighbors": [107, 108, 104, 105, 110], "id": 106, "value": 3.5115864527629195}, {"neighbors": [106, 108, 110, 104, 105], "id": 107, "value": 0.28426161312687798}, {"neighbors": [107, 106, 110, 111, 104], "id": 108, "value": 1.4312856238125402}, {"neighbors": [113, 103, 112, 105, 114], "id": 109, "value": 0.52338260237460599}, {"neighbors": [111, 108, 107, 112, 106], "id": 110, "value": 0.60405643738977099}, {"neighbors": [110, 112, 108, 107, 114], "id": 111, "value": 1.1520138588133402}, {"neighbors": [114, 111, 110, 116, 108], "id": 112, "value": 0.073355068168346194}, {"neighbors": [109, 114, 103, 112, 116], "id": 113, "value": 0.93711467324291009}, {"neighbors": [116, 112, 117, 111, 118], "id": 114, "value": 3.8085539714867598}, {"neighbors": [97, 113, 109, 103, 114], "id": 115, "value": 0.516115441331367}, {"neighbors": [117, 114, 118, 119, 112], "id": 116, "value": 0.13438834463702601}, {"neighbors": [118, 116, 119, 120, 114], "id": 117, "value": 0.77994428969359308}, {"neighbors": [119, 117, 120, 116, 121], "id": 118, "value": 0.8257071547420971}, {"neighbors": [120, 118, 117, 121, 122], "id": 119, "value": 0.38158795345653707}, {"neighbors": [119, 121, 118, 122, 123], "id": 120, "value": 0.31946567956868105}, {"neighbors": [120, 122, 119, 123, 124], "id": 121, "value": 0.094264062596266407}, {"neighbors": [123, 121, 120, 124, 125], "id": 122, "value": 2.0301850048685499}, {"neighbors": [122, 124, 125, 121, 120], "id": 123, "value": 0.73502161828289103}, {"neighbors": [125, 123, 126, 122, 121], "id": 124, "value": 1.0129604365620699}, {"neighbors": [124, 126, 123, 127, 122], "id": 125, "value": 0.9540553211439291}, {"neighbors": [125, 127, 128, 124, 129], "id": 126, "value": 0.40286655045516206}, {"neighbors": [126, 128, 125, 129, 130], "id": 127, "value": 1.5655853314527499}, {"neighbors": [129, 127, 126, 130, 131], "id": 128, "value": 0.35703918722786704}, {"neighbors": [130, 128, 131, 127, 132], "id": 129, "value": 0.44113013338934998}, {"neighbors": [129, 131, 128, 132, 133], "id": 130, "value": 0.34342848862483694}, {"neighbors": [130, 132, 129, 133, 134], "id": 131, "value": 0.92375830433407202}, {"neighbors": [131, 133, 130, 134, 135], "id": 132, "value": 0.53090421370291707}, {"neighbors": [132, 134, 135, 131, 130], "id": 133, "value": 0.65785011868429999}, {"neighbors": [135, 133, 136, 132, 137], "id": 134, "value": 0.21513464720926698}, {"neighbors": [134, 136, 137, 133, 132], "id": 135, "value": 0.90936832468721407}, {"neighbors": [137, 135, 134, 138, 139], "id": 136, "value": 0.81092436974789905}, {"neighbors": [136, 138, 139, 135, 134], "id": 137, "value": 0.9080986684130099}, {"neighbors": [137, 139, 136, 140, 141], "id": 138, "value": 0.14563106796116501}, {"neighbors": [140, 138, 141, 137, 142], "id": 139, "value": 0.21214030665826503}, {"neighbors": [141, 139, 142, 138, 137], "id": 140, "value": 0.86379716981132093}, {"neighbors": [142, 140, 139, 143, 138], "id": 141, "value": 0.49114521841794601}, {"neighbors": [141, 143, 140, 144, 139], "id": 142, "value": 0.76680198466395988}, {"neighbors": [142, 144, 145, 141, 146], "id": 143, "value": 0.243854666536089}, {"neighbors": [145, 143, 146, 142, 141], "id": 144, "value": 0.23133946830265897}, {"neighbors": [146, 144, 143, 147, 142], "id": 145, "value": 0.10411502231036199}, {"neighbors": [145, 147, 144, 148, 143], "id": 146, "value": 1.2923864363403701}, {"neighbors": [146, 148, 149, 145, 150], "id": 147, "value": 0.32218396458435805}, {"neighbors": [147, 149, 150, 146, 151], "id": 148, "value": 0.17475328947368399}, {"neighbors": [150, 148, 147, 151, 152], "id": 149, "value": 0.74725274725274715}, {"neighbors": [149, 151, 148, 152, 147], "id": 150, "value": 0.28595041322314096}, {"neighbors": [150, 152, 149, 153, 148], "id": 151, "value": 0.236564669580869}, {"neighbors": [153, 151, 150, 154, 149], "id": 152, "value": 0.94658119658119588}, {"neighbors": [152, 154, 155, 151, 156], "id": 153, "value": 0.63286999182338499}, {"neighbors": [155, 153, 152, 156, 151], "id": 154, "value": 0.72636192861615512}, {"neighbors": [156, 154, 153, 157, 152], "id": 155, "value": 0.56740878169449593}, {"neighbors": [157, 155, 158, 154, 153], "id": 156, "value": 0.29687841082733002}, {"neighbors": [156, 158, 159, 155, 160], "id": 157, "value": 0.28148614609571804}, {"neighbors": [159, 157, 160, 156, 155], "id": 158, "value": 0.82989883851629798}, {"neighbors": [160, 158, 157, 161, 156], "id": 159, "value": 2.9188481675392701}, {"neighbors": [159, 161, 158, 162, 157], "id": 160, "value": 0.87278715520790395}, {"neighbors": [162, 160, 163, 159, 164], "id": 161, "value": 1.7228464419475702}, {"neighbors": [161, 163, 164, 160, 165], "id": 162, "value": 0.14911080711354299}, {"neighbors": [164, 162, 161, 165, 166], "id": 163, "value": 0.75630252100840301}, {"neighbors": [165, 163, 162, 166, 161], "id": 164, "value": 3.1453534551231099}, {"neighbors": [164, 166, 167, 163, 162], "id": 165, "value": 0.502413339183853}, {"neighbors": [165, 167, 164, 168, 163], "id": 166, "value": 0.71269487750556793}, {"neighbors": [168, 166, 165, 169, 164], "id": 167, "value": 0.34201235657546303}, {"neighbors": [167, 169, 166, 170, 165], "id": 168, "value": 0.87216624685138489}, {"neighbors": [168, 170, 167, 171, 166], "id": 169, "value": 0.48229665071770295}, {"neighbors": [171, 169, 172, 168, 173], "id": 170, "value": 0.471648811079174}, {"neighbors": [172, 170, 173, 169, 174], "id": 171, "value": 0.6397654768063461}, {"neighbors": [171, 173, 174, 170, 175], "id": 172, "value": 0.54217736121124704}, {"neighbors": [172, 174, 171, 175, 176], "id": 173, "value": 12.7519379844961}, {"neighbors": [173, 175, 172, 176, 171], "id": 174, "value": 0.61456337257048999}, {"neighbors": [176, 174, 177, 173, 172], "id": 175, "value": 0.96597812879708411}, {"neighbors": [177, 175, 174, 178, 179], "id": 176, "value": 0.28721159735928697}, {"neighbors": [176, 178, 175, 179, 174], "id": 177, "value": 0.45848191543555794}, {"neighbors": [179, 177, 180, 176, 181], "id": 178, "value": 0.135380023451658}, {"neighbors": [180, 178, 181, 177, 176], "id": 179, "value": 0.29861357980803399}, {"neighbors": [181, 179, 178, 182, 177], "id": 180, "value": 0.70977917981072591}, {"neighbors": [180, 182, 179, 183, 184], "id": 181, "value": 1.2554347826087}, {"neighbors": [181, 183, 184, 180, 179], "id": 182, "value": 0.0}, {"neighbors": [182, 184, 181, 185, 186], "id": 183, "value": 0.63382157123834904}, {"neighbors": [185, 183, 182, 186, 187], "id": 184, "value": 0.36458878994237798}, {"neighbors": [184, 186, 187, 183, 188], "id": 185, "value": 0.984076433121019}, {"neighbors": [187, 185, 184, 188, 189], "id": 186, "value": 0.34763139288239503}, {"neighbors": [188, 186, 189, 185, 184], "id": 187, "value": 1.96129707112971}, {"neighbors": [187, 189, 190, 186, 185], "id": 188, "value": 0.89480264332916593}, {"neighbors": [190, 188, 187, 191, 192], "id": 189, "value": 1.5350120731286698}, {"neighbors": [189, 191, 188, 192, 187], "id": 190, "value": 0.145212896874231}, {"neighbors": [192, 190, 189, 193, 194], "id": 191, "value": 0.68522483940042789}, {"neighbors": [191, 193, 190, 194, 195], "id": 192, "value": 3.4217171717171699}, {"neighbors": [192, 194, 191, 195, 196], "id": 193, "value": 1.2975670617591999}, {"neighbors": [195, 193, 196, 192, 197], "id": 194, "value": 0.40941434044882297}, {"neighbors": [196, 194, 197, 193, 192], "id": 195, "value": 0.57164253619570604}, {"neighbors": [195, 197, 194, 198, 199], "id": 196, "value": 0.68508644369041805}, {"neighbors": [196, 198, 195, 199, 194], "id": 197, "value": 0.40217929668152602}, {"neighbors": [199, 197, 200, 196, 195], "id": 198, "value": 1.1682670324645601}, {"neighbors": [200, 198, 201, 197, 196], "id": 199, "value": 0.83652618135376799}, {"neighbors": [199, 201, 202, 198, 203], "id": 200, "value": 43.095238095238102}, {"neighbors": [200, 202, 199, 203, 204], "id": 201, "value": 0.27576369903720399}, {"neighbors": [201, 203, 204, 200, 199], "id": 202, "value": 0.52034261241970003}, {"neighbors": [204, 202, 201, 200, 206], "id": 203, "value": 0.332628340703711}, {"neighbors": [203, 202, 206, 205, 201], "id": 204, "value": 0.26412325752017601}, {"neighbors": [206, 204, 207, 203, 208], "id": 205, "value": 0.25641025641025605}, {"neighbors": [207, 205, 208, 204, 209], "id": 206, "value": 0.173296115375669}, {"neighbors": [208, 206, 209, 205, 210], "id": 207, "value": 0.43307585158921102}, {"neighbors": [207, 209, 210, 206, 211], "id": 208, "value": 0.62827225130890096}, {"neighbors": [210, 208, 207, 211, 212], "id": 209, "value": 0.48103245991396204}, {"neighbors": [209, 211, 212, 208, 207], "id": 210, "value": 0.37979218917950608}, {"neighbors": [210, 212, 213, 209, 214], "id": 211, "value": 0.46059637912673101}, {"neighbors": [211, 213, 210, 214, 209], "id": 212, "value": 0.86506086506086499}, {"neighbors": [214, 212, 211, 215, 216], "id": 213, "value": 0.27578245253976397}, {"neighbors": [213, 215, 216, 212, 211], "id": 214, "value": 0.92765113974231916}, {"neighbors": [214, 216, 213, 217, 212], "id": 215, "value": 0.25740740740740697}, {"neighbors": [217, 215, 218, 214, 219], "id": 216, "value": 0.0}, {"neighbors": [216, 218, 219, 215, 220], "id": 217, "value": 0.35496688741721899}, {"neighbors": [217, 219, 216, 220, 221], "id": 218, "value": 0.73153779322328405}, {"neighbors": [218, 220, 221, 217, 216], "id": 219, "value": 0.52507042253521097}, {"neighbors": [221, 219, 222, 218, 223], "id": 220, "value": 1.42156862745098}, {"neighbors": [220, 222, 219, 223, 218], "id": 221, "value": 0.77711357813834292}, {"neighbors": [223, 221, 220, 224, 219], "id": 222, "value": 311.33333333333303}, {"neighbors": [224, 222, 221, 225, 220], "id": 223, "value": 0.14421804710240801}, {"neighbors": [223, 225, 226, 222, 221], "id": 224, "value": 0.26004119464469599}, {"neighbors": [224, 226, 227, 223, 228], "id": 225, "value": 2.5018615040953098}, {"neighbors": [227, 225, 224, 228, 223], "id": 226, "value": 0.615611587982833}, {"neighbors": [226, 228, 225, 229, 224], "id": 227, "value": 0.16261631583702202}, {"neighbors": [227, 229, 226, 230, 231], "id": 228, "value": 0.58225642514883114}, {"neighbors": [230, 228, 231, 227, 232], "id": 229, "value": 0.54380664652568}, {"neighbors": [229, 231, 232, 228, 233], "id": 230, "value": 0.97062872877466688}, {"neighbors": [232, 230, 233, 229, 234], "id": 231, "value": 0.79822097378277201}, {"neighbors": [231, 233, 230, 234, 235], "id": 232, "value": 0.41338163221819701}, {"neighbors": [234, 232, 231, 235, 236], "id": 233, "value": 0.34688820871593101}, {"neighbors": [233, 235, 232, 236, 231], "id": 234, "value": 0.254112808460635}, {"neighbors": [236, 234, 237, 233, 232], "id": 235, "value": 0.53263315828957203}, {"neighbors": [235, 237, 238, 234, 239], "id": 236, "value": 0.24169184290030199}, {"neighbors": [238, 236, 239, 235, 240], "id": 237, "value": 0.69619029201314997}, {"neighbors": [239, 237, 240, 236, 241], "id": 238, "value": 1.0177609259628799}, {"neighbors": [238, 240, 241, 237, 242], "id": 239, "value": 0.644348985335506}, {"neighbors": [241, 239, 242, 238, 237], "id": 240, "value": 0.48443881143500894}, {"neighbors": [242, 240, 239, 243, 238], "id": 241, "value": 0.56215868936717006}, {"neighbors": [241, 243, 244, 240, 239], "id": 242, "value": 0.71704677232315406}, {"neighbors": [242, 244, 241, 245, 240], "id": 243, "value": 0.33840773503394395}, {"neighbors": [243, 245, 242, 246, 247], "id": 244, "value": 0.224396469211954}, {"neighbors": [244, 246, 243, 247, 242], "id": 245, "value": 0.18940200042562197}, {"neighbors": [247, 245, 244, 248, 243], "id": 246, "value": 0.66488174921909904}, {"neighbors": [248, 246, 249, 245, 244], "id": 247, "value": 0.21327014218009502}, {"neighbors": [247, 249, 246, 250, 251], "id": 248, "value": 0.084361818465864699}, {"neighbors": [250, 248, 247, 251, 252], "id": 249, "value": 0.34302201325069503}, {"neighbors": [249, 251, 252, 248, 253], "id": 250, "value": 0.59154295996401296}, {"neighbors": [252, 250, 253, 249, 248], "id": 251, "value": 0.67836602271051494}, {"neighbors": [253, 251, 254, 250, 255], "id": 252, "value": 0.18175274428648497}, {"neighbors": [252, 254, 251, 255, 256], "id": 253, "value": 0.81903528650048596}, {"neighbors": [253, 255, 252, 256, 257], "id": 254, "value": 0.0}, {"neighbors": [256, 254, 257, 253, 252], "id": 255, "value": 0.61877490039840599}, {"neighbors": [255, 257, 254, 258, 253], "id": 256, "value": 0.56348246674727898}, {"neighbors": [256, 258, 255, 259, 260], "id": 257, "value": 0.41457618167414789}, {"neighbors": [259, 257, 260, 256, 261], "id": 258, "value": 0.52136317395727394}, {"neighbors": [258, 260, 261, 257, 262], "id": 259, "value": 1.4966241560390099}, {"neighbors": [261, 259, 258, 262, 257], "id": 260, "value": 0.30903869820866997}, {"neighbors": [262, 260, 263, 259, 258], "id": 261, "value": 0.50463324773919793}, {"neighbors": [261, 263, 260, 264, 259], "id": 262, "value": 0.19428254232584}, {"neighbors": [262, 264, 261, 265, 266], "id": 263, "value": 0.83780674846625791}, {"neighbors": [265, 263, 266, 262, 261], "id": 264, "value": 1.47399925177703}, {"neighbors": [264, 266, 263, 267, 268], "id": 265, "value": 0.23701566364385798}, {"neighbors": [265, 267, 268, 264, 269], "id": 266, "value": 0.56526806526806495}, {"neighbors": [266, 268, 269, 265, 270], "id": 267, "value": 0.14228484597320099}, {"neighbors": [269, 267, 266, 270, 265], "id": 268, "value": 0.34974093264248701}, {"neighbors": [268, 270, 267, 271, 266], "id": 269, "value": 0.14355628058727599}, {"neighbors": [269, 271, 272, 268, 267], "id": 270, "value": 1.0464185674269699}, {"neighbors": [270, 272, 269, 273, 274], "id": 271, "value": 0.93211206896551713}, {"neighbors": [273, 271, 270, 274, 269], "id": 272, "value": 1.2049335863377599}, {"neighbors": [272, 274, 275, 271, 276], "id": 273, "value": 0.29667328699106299}, {"neighbors": [275, 273, 276, 272, 271], "id": 274, "value": 0.21476510067114105}, {"neighbors": [276, 274, 273, 277, 272], "id": 275, "value": 0.8576512455516021}, {"neighbors": [275, 277, 278, 274, 273], "id": 276, "value": 3.1391962725684301}, {"neighbors": [276, 278, 275, 279, 280], "id": 277, "value": 0.68832731648616108}, {"neighbors": [279, 277, 276, 280, 281], "id": 278, "value": 1.6138225863911699}, {"neighbors": [278, 280, 281, 277, 276], "id": 279, "value": 2.3062730627306296}, {"neighbors": [279, 281, 282, 278, 283], "id": 280, "value": 0.30208921513269299}, {"neighbors": [280, 282, 279, 283, 278], "id": 281, "value": 0.57084375710711899}, {"neighbors": [283, 281, 280, 284, 285], "id": 282, "value": 1.0214552238806001}, {"neighbors": [284, 282, 285, 281, 280], "id": 283, "value": 0.44582118561710404}, {"neighbors": [283, 285, 282, 287, 281], "id": 284, "value": 0.51775147928994103}, {"neighbors": [284, 283, 287, 282, 288], "id": 285, "value": 1.07751937984496}, {"neighbors": [288, 285, 284, 283, 282], "id": 287, "value": 0.26545316647705702}, {"neighbors": [287, 285, 284, 283, 282], "id": 288, "value": 1.08211330362826}] \ No newline at end of file diff --git a/src/py/crankshaft/test/fixtures/lag_result.json b/src/py/crankshaft/test/fixtures/lag_result.json new file mode 100644 index 0000000..bd9ddb0 --- /dev/null +++ b/src/py/crankshaft/test/fixtures/lag_result.json @@ -0,0 +1 @@ +[[3, 0.59917022884215787], [4, 0.5914464964093501], [6, 0.52398950472625905], [7, 0.61132718456668167], [8, 0.52052337502085388], [9, 0.62177195178608724], [10, 0.62771246026132066], [11, 0.59065740724526539], [12, 0.46001558982368529], [13, 0.73252014817971944], [14, 8.4016928692525887], [15, 8.5423352189444], [16, 8.3004304965964213], [17, 0.62060890647629152], [18, 8.3853645534349806], [19, 8.4404932394452299], [20, 8.3899541001929077], [21, 0.94830736275412264], [22, 0.75832502758999087], [23, 0.87485923343150362], [24, 1.1329259703808754], [25, 0.94850144973056816], [26, 1.1250776421211206], [27, 1.2945652098940155], [28, 3.7835175258281692], [29, 3.1643538113907517], [30, 3.6934668168212932], [31, 1.35661181268162], [32, 3.330256306205865], [33, 3.7517744718057782], [34, 1.751816963860652], [35, 1.9005900617950995], [36, 1.3368171011055425], [37, 1.7404280277913746], [38, 2.3702715607087312], [39, 1.633521402387591], [40, 1.1804171969881418], [41, 1.044675329982836], [42, 0.45350458841174662], [43, 0.42017290238917865], [44, 0.50055167989687011], [45, 0.48439998949141383], [46, 0.43179609116669443], [47, 0.58361867683688906], [48, 0.81101202371537839], [49, 0.82399537503355291], [50, 0.77888953647502734], [51, 1.0605737638152242], [52, 1.257142172604784], [53, 1.1617016133382763], [54, 0.78654227388792197], [55, 1.134124015945821], [56, 1.1812716100194534], [57, 0.66111081685791495], [58, 0.39176026644078721], [59, 0.54892558026450844], [60, 0.79377854223152466], [61, 0.83117332074954131], [62, 0.84386551529454823], [63, 0.51419871837393061], [64, 0.68242363201664524], [65, 0.90422138065128843], [66, 1.3291988157567973], [67, 1.0933465338692789], [68, 2.6382801353521548], [69, 3.0005674390361103], [70, 3.2845980600813931], [71, 1.0633889511576451], [72, 3.1359271364172199], [73, 2.9130916417720032], [74, 1.1614836249963991], [75, 0.85748563741500361], [76, 0.9069424975520527], [77, 1.0190007044213858], [78, 0.66723694481794527], [79, 0.79816959778556829], [80, 0.69630254297101546], [81, 0.55320680887272267], [82, 0.67324026160756234], [83, 0.78044950851877015], [84, 0.86468937533302315], [85, 0.6440595071152585], [87, 0.64108130780966643], [88, 1.018570448080101], [89, 0.82488562352300621], [90, 0.88407550365710152], [91, 0.40988091515778291], [92, 0.62152037181500985], [93, 0.52363151635118876], [94, 0.78332233491916659], [95, 0.5998396989925554], [96, 0.60213582934837828], [97, 0.55424967541703363], [98, 0.31161164555310344], [99, 0.68038238374929971], [100, 0.62369691030213903], [101, 0.45739121135538818], [102, 0.3995436261116434], [103, 0.61666709499052741], [104, 1.0837372530449838], [105, 1.0115089384490972], [106, 0.64883890737451244], [107, 1.2943038753017206], [108, 1.1667286013749758], [109, 1.1822317126236415], [110, 1.2905005233368048], [111, 1.240302542796859], [112, 1.4260596472278877], [113, 0.99778972382510522], [114, 0.59308174321088059], [115, 1.2583274050236342], [116, 1.1738296875094667], [117, 1.0939406207782203], [118, 0.34193006599042075], [119, 0.80991323829383755], [120, 0.81335315878926828], [121, 0.89584413854774581], [122, 0.62315342363076753], [123, 0.88218610094789929], [124, 0.84327851146935973], [125, 1.1493237883242846], [126, 0.86615408195519317], [127, 0.49970393616822906], [128, 0.73535376165123423], [129, 0.7441431050684888], [130, 0.58213639146770124], [131, 0.43768952032213421], [132, 0.60990797670793806], [133, 0.58451879571166143], [134, 0.76342913904706799], [135, 0.62458240355147865], [136, 0.47807460298578419], [137, 0.45863974325276202], [138, 0.65722114660968822], [139, 0.63509482185348043], [140, 0.5047634492228692], [141, 0.44644503912616007], [142, 0.40845536594525605], [143, 0.57715762600705944], [144, 0.57966066565374552], [145, 0.57131330408548719], [146, 0.21524928224143042], [147, 0.52089158172006089], [148, 0.57686764619629716], [149, 0.3932067066886496], [150, 0.48546717349457086], [151, 0.55748152767083059], [152, 0.52579995009925939], [153, 0.55475899746000923], [154, 0.53606061010145523], [155, 0.57683553478875682], [156, 0.6076051373492104], [157, 1.0971642707570597], [158, 0.98748173227294367], [159, 0.80077939851896407], [160, 1.1804380802424799], [161, 1.568480421198446], [162, 1.399940582494168], [163, 1.2464837841747287], [164, 0.76867359735178753], [165, 1.0210948034652174], [166, 1.1236495837484428], [167, 1.1429849138763237], [168, 0.50221320701235217], [169, 0.60765755376358721], [170, 3.0576687440165564], [171, 2.972524836014943], [172, 3.0887787547498391], [173, 0.60993918734889085], [174, 3.0374141097340135], [175, 2.9308744462145366], [176, 0.49460340401256486], [177, 0.46034934039731068], [178, 0.60190421100446101], [179, 0.56925749973318585], [180, 0.42958206026078999], [181, 0.40136062415989743], [182, 0.65244758068163733], [183, 0.59034627971089837], [184, 0.78536529367429475], [185, 0.84042829370439975], [186, 1.1479554021301888], [187, 0.82522226648072561], [188, 0.99464597342720495], [189, 1.421650924490141], [190, 1.6996107597410288], [191, 1.3617847087856185], [192, 0.62181233493567767], [193, 1.1546170662905091], [194, 1.2756385020088041], [195, 1.2431928628594275], [196, 0.67760587742887668], [197, 0.73418730683065503], [198, 9.1181345106319043], [199, 9.1253069134223637], [200, 0.62670557319578868], [201, 9.0097716974470909], [202, 8.9608559147705922], [203, 8.8657527559181712], [204, 0.31168820478930803], [205, 0.36627916329953364], [206, 0.41258281534850128], [207, 0.38376065443765889], [208, 0.38555859903701584], [209, 0.55335950725304284], [210, 0.57360756139993396], [211, 0.58586382128728332], [212, 0.50497092410045652], [213, 0.50214315826746447], [214, 0.37176942082695341], [215, 0.48469226895203343], [216, 0.55932673006508804], [217, 0.58711685012337633], [218, 0.61574390310835059], [219, 0.65703737724596523], [220, 62.702254634866463], [221, 62.831145644728991], [222, 0.62560237397432761], [223, 63.258783647532475], [224, 63.074427610130385], [225, 0.35294871414315809], [226, 0.73019869736565346], [227, 0.90071547167947008], [228, 0.61817685058059479], [229, 0.58542081515229794], [230, 0.53691077727828229], [231, 0.50576360493902206], [232, 0.58049677560471546], [233, 0.44800808313029566], [234, 0.46656316318135488], [235, 0.39045295686164305], [236, 0.62900923401234865], [237, 0.58417474478465381], [238, 0.52576572421022738], [239, 0.6955190982202728], [240, 0.72750113300037222], [241, 0.64040064601809854], [242, 0.4507501380767166], [243, 0.43548854855258184], [244, 0.42460167983638281], [245, 0.43160057359364928], [246, 0.20996763306349592], [247, 0.30121281011464696], [248, 0.49821657746488346], [249, 0.34985873752139457], [250, 0.42130757704280913], [251, 0.40394296449350875], [252, 0.54154383391468397], [253, 0.40847522682853699], [254, 0.51952431592136084], [255, 0.39576933584167961], [256, 0.4747499085060628], [257, 0.70185667907012794], [258, 0.65767095008166099], [259, 0.38877876878102591], [260, 0.62629586034709395], [261, 0.67182306379941048], [262, 0.92442042044603323], [263, 0.59503975415079813], [264, 0.46780125348864382], [265, 0.67381996882540829], [266, 0.46931939492477037], [267, 0.46839990191373121], [268, 0.42690868457987396], [269, 0.60716489605524804], [270, 0.55452554290124823], [271, 0.58126936440284205], [272, 0.52670506092839342], [273, 1.2697316548188899], [274, 1.2861132920828746], [275, 1.108779112610911], [276, 0.73424790721822752], [277, 1.643806476474905], [278, 1.4013459248050064], [279, 1.2628558295371146], [280, 1.1916431631453244], [281, 1.1378922547504393], [282, 0.58280500339836339], [283, 0.69793181105106261], [284, 0.67621854258536807], [285, 0.66651887177859248], [287, 0.82893211445217296], [288, 0.66560008702193241]] \ No newline at end of file diff --git a/src/py/crankshaft/test/test_clustering_moran.py b/src/py/crankshaft/test/test_clustering_moran.py index cc1930e..0d02fa0 100644 --- a/src/py/crankshaft/test/test_clustering_moran.py +++ b/src/py/crankshaft/test/test_clustering_moran.py @@ -14,7 +14,7 @@ class FakeDataProvider(AnalysisDataProvider): def __init__(self, mock_data): self.mock_result = mock_data - def get_moran(self, w_type, params): + def get_neighbor(self, w_type, params): return self.mock_result diff --git a/src/py/crankshaft/test/test_spatial_lag.py b/src/py/crankshaft/test/test_spatial_lag.py new file mode 100644 index 0000000..fcb8081 --- /dev/null +++ b/src/py/crankshaft/test/test_spatial_lag.py @@ -0,0 +1,50 @@ +import unittest +import numpy as np + +from helper import fixture_file +from crankshaft.spatial_lag import Spatial +from crankshaft.analysis_data_provider import AnalysisDataProvider +import crankshaft.pysal_utils as pu +from crankshaft import random_seeds +import json +from collections import OrderedDict + + +class FakeDataProvider(AnalysisDataProvider): + def __init__(self, mock_data): + self.mock_result = mock_data + + def get_neighbor(self, w_type, params): + return self.mock_result + + +class SpatialLagTest(unittest.TestCase): + """Testing class for Spatial Lag function""" + + def setUp(self): + self.params = {"id_col": "cartodb_id", + "attr1": "mehak", + "subquery": "SELECT * FROM m_list", + "geom_col": "the_geom", + "num_ngbrs": 10} + self.neighbors_data = json.loads( + open(fixture_file('lag_data.json')).read()) + self.lag_result = json.loads( + open(fixture_file('lag_result.json')).read()) + + def test_local_stat(self): + """Test Spatial Lag function""" + data = [OrderedDict([('id', d['id']), + ('attr1', d['value']), + ('neighbors', d['neighbors'])]) + for d in self.neighbors_data] + + spatial = Spatial(FakeDataProvider(data)) + # random_seeds.set_random_seeds(1234) + result = spatial.spatial_lag('subquery', 'value', + 'knn', 5, 'the_geom', 'cartodb_id') + result = [(row[0], row[1]) for row in result] + zipped_values = zip(result, self.lag_result) + + for ([res_lag, res_id], [exp_id, exp_lag]) in zipped_values: + self.assertEqual(res_lag, exp_lag)