In [256]:
import interaction

In [257]:
import pysal as ps

In [258]:
events = interaction.SpaceTimeEvents(ps.examples.get_path("burkitt"), 'T')

In [259]:
kd_t = ps.cg.KDTree(events.time)

In [260]:
kd_t


Out[260]:
<scipy.spatial.kdtree.KDTree at 0x7fc57c1009d0>

In [261]:
neighbors_t = kd_t.query_pairs(5)

In [262]:
neighbors_t


Out[262]:
set([(118, 119),
     (175, 176),
     (69, 70),
     (174, 175),
     (107, 108),
     (128, 129),
     (30, 31),
     (150, 151),
     (99, 101),
     (113, 114),
     (25, 26),
     (70, 71),
     (168, 169),
     (84, 85),
     (43, 44),
     (150, 152),
     (153, 154),
     (56, 57),
     (100, 101),
     (125, 126),
     (99, 100),
     (98, 100),
     (139, 141),
     (115, 116),
     (81, 82),
     (116, 118),
     (158, 159),
     (139, 140),
     (117, 119),
     (184, 186),
     (162, 163),
     (41, 42),
     (178, 179),
     (46, 47),
     (167, 168),
     (122, 123),
     (51, 52),
     (48, 49),
     (137, 138),
     (116, 119),
     (102, 103),
     (117, 118),
     (35, 36),
     (69, 71),
     (151, 152),
     (185, 186),
     (116, 117),
     (140, 141),
     (184, 185),
     (98, 99),
     (143, 144),
     (155, 156)])

In [263]:
kd_s = ps.cg.KDTree(events.space)

In [264]:
neighbors_s = kd_s.query_pairs(20)

In [265]:
neighbors_s


Out[265]:
set([(143, 183),
     (18, 121),
     (93, 158),
     (38, 124),
     (21, 28),
     (152, 165),
     (118, 142),
     (28, 162),
     (56, 79),
     (1, 64),
     (57, 163),
     (94, 167),
     (59, 131),
     (69, 75),
     (119, 165),
     (47, 119),
     (106, 170),
     (33, 154),
     (52, 98),
     (126, 169),
     (36, 177),
     (38, 149),
     (15, 111),
     (49, 58),
     (87, 128),
     (65, 95),
     (35, 123),
     (127, 138),
     (37, 158),
     (114, 173),
     (116, 118),
     (8, 87),
     (46, 164),
     (85, 87),
     (32, 77),
     (88, 154),
     (109, 177),
     (147, 185),
     (77, 163),
     (21, 37),
     (4, 35),
     (5, 187),
     (25, 162),
     (28, 185),
     (104, 122),
     (16, 38),
     (54, 87),
     (57, 164),
     (94, 174),
     (4, 178),
     (79, 85),
     (27, 115),
     (47, 124),
     (51, 121),
     (16, 181),
     (35, 147),
     (71, 138),
     (130, 165),
     (82, 170),
     (45, 54),
     (137, 173),
     (139, 177),
     (30, 111),
     (14, 165),
     (125, 179),
     (1, 176),
     (28, 159),
     (31, 111),
     (25, 58),
     (45, 71),
     (138, 180),
     (63, 163),
     (109, 170),
     (146, 180),
     (38, 110),
     (21, 46),
     (15, 156),
     (5, 164),
     (44, 129),
     (47, 148),
     (157, 186),
     (128, 172),
     (148, 167),
     (4, 185),
     (5, 53),
     (34, 167),
     (119, 187),
     (36, 79),
     (179, 181),
     (35, 152),
     (37, 63),
     (58, 148),
     (24, 28),
     (136, 139),
     (45, 47),
     (155, 172),
     (66, 84),
     (31, 108),
     (14, 172),
     (37, 128),
     (99, 108),
     (16, 120),
     (62, 152),
     (65, 148),
     (140, 143),
     (166, 170),
     (5, 173),
     (25, 172),
     (63, 123),
     (56, 139),
     (148, 174),
     (26, 85),
     (51, 71),
     (16, 163),
     (16, 93),
     (109, 122),
     (56, 122),
     (20, 96),
     (58, 159),
     (6, 87),
     (136, 178),
     (14, 183),
     (108, 131),
     (127, 161),
     (17, 27),
     (8, 76),
     (46, 185),
     (138, 166),
     (85, 98),
     (51, 174),
     (87, 137),
     (146, 166),
     (166, 173),
     (112, 171),
     (5, 150),
     (43, 111),
     (20, 112),
     (11, 70),
     (33, 53),
     (56, 146),
     (148, 181),
     (131, 151),
     (5, 39),
     (8, 170),
     (7, 146),
     (119, 137),
     (103, 158),
     (160, 176),
     (109, 115),
     (19, 119),
     (150, 181),
     (136, 185),
     (135, 163),
     (37, 178),
     (162, 164),
     (24, 153),
     (65, 102),
     (28, 110),
     (138, 161),
     (49, 93),
     (51, 183),
     (90, 102),
     (146, 161),
     (21, 57),
     (4, 7),
     (5, 159),
     (26, 52),
     (7, 122),
     (48, 105),
     (36, 88),
     (21, 180),
     (94, 138),
     (131, 156),
     (7, 139),
     (27, 109),
     (106, 137),
     (51, 85),
     (35, 143),
     (18, 173),
     (76, 123),
     (6, 65),
     (88, 162),
     (10, 12),
     (141, 149),
     (128, 153),
     (3, 103),
     (4, 127),
     (23, 120),
     (8, 122),
     (120, 148),
     (140, 180),
     (87, 159),
     (146, 152),
     (57, 88),
     (76, 140),
     (22, 176),
     (43, 93),
     (44, 101),
     (3, 24),
     (46, 58),
     (177, 185),
     (124, 128),
     (61, 92),
     (64, 160),
     (27, 39),
     (49, 174),
     (51, 90),
     (16, 164),
     (35, 180),
     (18, 164),
     (112, 156),
     (76, 114),
     (24, 120),
     (25, 110),
     (6, 56),
     (63, 185),
     (85, 140),
     (159, 161),
     (14, 136),
     (91, 160),
     (37, 164),
     (40, 88),
     (39, 128),
     (128, 179),
     (85, 125),
     (87, 148),
     (43, 120),
     (73, 144),
     (146, 147),
     (76, 139),
     (44, 92),
     (7, 104),
     (47, 177),
     (177, 178),
     (124, 159),
     (52, 172),
     (73, 97),
     (36, 115),
     (5, 18),
     (47, 143),
     (119, 148),
     (107, 144),
     (88, 103),
     (0, 73),
     (19, 138),
     (58, 179),
     (25, 119),
     (79, 172),
     (27, 185),
     (85, 149),
     (50, 89),
     (14, 147),
     (18, 46),
     (110, 135),
     (38, 53),
     (28, 150),
     (4, 109),
     (95, 148),
     (8, 104),
     (120, 162),
     (28, 123),
     (122, 138),
     (140, 170),
     (51, 138),
     (87, 173),
     (90, 115),
     (145, 177),
     (18, 65),
     (76, 130),
     (5, 138),
     (99, 182),
     (157, 179),
     (53, 158),
     (36, 122),
     (128, 164),
     (78, 142),
     (6, 155),
     (172, 183),
     (10, 86),
     (52, 90),
     (18, 150),
     (54, 183),
     (19, 147),
     (40, 183),
     (58, 186),
     (82, 123),
     (50, 80),
     (88, 163),
     (14, 154),
     (35, 51),
     (93, 174),
     (23, 135),
     (64, 92),
     (104, 137),
     (36, 147),
     (73, 130),
     (57, 115),
     (95, 186),
     (98, 138),
     (27, 138),
     (167, 187),
     (47, 71),
     (52, 178),
     (128, 157),
     (37, 125),
     (93, 112),
     (94, 102),
     (4, 138),
     (98, 125),
     (6, 146),
     (153, 174),
     (63, 179),
     (47, 52),
     (65, 71),
     (125, 138),
     (6, 128),
     (19, 152),
     (3, 175),
     (25, 65),
     (6, 45),
     (18, 90),
     (50, 75),
     (88, 170),
     (161, 180),
     (35, 56),
     (75, 81),
     (38, 39),
     (3, 67),
     (42, 170),
     (45, 143),
     (3, 32),
     (53, 127),
     (114, 127),
     (115, 119),
     (7, 87),
     (104, 185),
     (52, 185),
     (36, 104),
     (37, 102),
     (42, 115),
     (6, 149),
     (62, 118),
     (102, 153),
     (30, 31),
     (31, 151),
     (112, 184),
     (21, 141),
     (77, 96),
     (6, 36),
     (45, 119),
     (114, 139),
     (3, 20),
     (18, 27),
     (38, 94),
     (39, 164),
     (97, 165),
     (23, 149),
     (32, 131),
     (34, 186),
     (70, 144),
     (79, 140),
     (46, 82),
     (7, 76),
     (47, 85),
     (123, 140),
     (36, 71),
     (52, 128),
     (17, 98),
     (71, 179),
     (28, 36),
     (6, 140),
     (27, 98),
     (47, 58),
     (123, 125),
     (178, 183),
     (34, 93),
     (54, 152),
     (19, 166),
     (40, 172),
     (114, 143),
     (65, 164),
     (28, 40),
     (32, 43),
     (107, 116),
     (35, 38),
     (110, 163),
     (39, 93),
     (65, 85),
     (131, 168),
     (148, 162),
     (53, 65),
     (76, 166),
     (149, 163),
     (8, 147),
     (83, 108),
     (121, 161),
     (47, 82),
     (106, 183),
     (24, 51),
     (5, 127),
     (153, 158),
     (20, 67),
     (137, 143),
     (27, 71),
     (87, 104),
     (125, 149),
     (127, 145),
     (54, 147),
     (112, 182),
     (21, 159),
     (24, 162),
     (23, 58),
     (79, 137),
     (109, 114),
     (28, 39),
     (85, 178),
     (35, 47),
     (39, 90),
     (116, 130),
     (7, 45),
     (29, 64),
     (34, 141),
     (70, 130),
     (36, 54),
     (94, 179),
     (8, 45),
     (149, 172),
     (8, 154),
     (13, 50),
     (121, 170),
     (123, 154),
     (52, 150),
     (71, 161),
     (19, 71),
     (24, 58),
     (62, 107),
     (30, 112),
     (125, 174),
     (35, 71),
     (19, 180),
     (40, 154),
     (59, 93),
     (23, 51),
     (138, 145),
     (85, 187),
     (14, 121),
     (147, 165),
     (28, 173),
     (32, 168),
     (96, 99),
     (70, 133),
     (83, 184),
     (149, 181),
     (79, 121),
     (26, 119),
     (7, 187),
     (121, 179),
     (123, 147),
     (106, 185),
     (16, 65),
     (36, 140),
     (19, 76),
     (51, 128),
     (88, 173),
     (27, 28),
     (137, 185),
     (66, 113),
     (125, 167),
     (15, 184),
     (59, 151),
     (5, 174),
     (21, 161),
     (28, 53),
     (138, 152),
     (21, 174),
     (18, 127),
     (147, 170),
     (4, 62),
     (116, 144),
     (7, 35),
     (28, 164),
     (122, 187),
     (5, 16),
     (32, 175),
     (34, 159),
     (57, 153),
     (53, 54),
     (8, 136),
     (121, 180),
     (36, 139),
     (19, 85),
     (20, 77),
     (6, 104),
     (82, 185),
     (34, 95),
     (31, 112),
     (87, 119),
     (127, 140),
     (37, 148),
     (30, 184),
     (23, 65),
     (65, 128),
     (46, 162),
     (163, 186),
     (88, 148),
     (109, 183),
     (38, 125),
     (21, 27),
     (152, 166),
     (58, 149),
     (33, 40),
     (34, 150),
     (57, 162),
     (94, 164),
     (4, 180),
     (8, 143),
     (154, 178),
     (46, 124),
     (123, 161),
     (88, 125),
     (51, 115),
     (71, 140),
     (36, 178),
     (150, 174),
     (63, 150),
     (139, 187),
     (125, 185),
     (35, 122),
     (39, 57),
     (40, 143),
     (114, 170),
     (23, 94),
     (65, 153),
     (140, 154),
     (57, 58),
     (21, 36),
     (115, 185),
     (152, 173),
     (48, 78),
     (104, 123),
     (12, 92),
     (16, 39),
     (83, 99),
     (53, 174),
     (148, 153),
     (121, 148),
     (98, 178),
     (117, 129),
     (7, 166),
     (84, 129),
     (47, 127),
     (123, 166),
     (106, 146),
     (33, 146),
     (123, 136),
     (35, 146),
     (56, 109),
     (37, 53),
     (38, 141),
     (150, 161),
     (63, 159),
     (137, 172),
     (154, 180),
     (30, 108),
     (14, 170),
     (125, 178),
     (15, 151),
     (127, 178),
     (111, 131),
     (114, 165),
     (25, 57),
     (46, 172),
     (49, 131),
     (140, 145),
     (14, 85),
     (90, 138),
     (18, 104),
     (88, 123),
     (152, 180),
     (43, 112),
     (99, 111),
     (7, 14),
     (63, 125),
     (27, 94),
     (105, 116),
     (124, 125),
     (39, 167),
     (57, 172),
     (94, 150),
     (41, 42),
     (5, 52),
     (51, 65),
     (179, 180),
     (35, 155),
     (19, 104),
     (76, 79),
     (133, 144),
     (136, 140),
     (102, 161),
     (158, 168),
     (14, 173),
     (35, 104),
     (127, 187),
     (40, 125),
     (39, 159),
     (85, 88),
     (150, 168),
     (141, 161),
     (70, 73),
     (71, 85),
     (146, 172),
     (20, 184),
     (21, 54),
     (5, 172),
     (118, 144),
     (33, 51),
     (16, 21),
     (34, 65),
     (56, 140),
     (94, 153),
     (26, 82),
     (123, 180),
     (33, 172),
     (159, 179),
     (17, 42),
     (109, 121),
     (56, 123),
     (37, 39),
     (3, 131),
     (150, 179),
     (63, 141),
     (12, 176),
     (21, 138),
     (43, 168),
     (183, 185),
     (39, 148),
     (120, 135),
     (121, 127),
     (84, 117),
     (32, 83),
     (82, 154),
     (71, 82),
     (109, 155),
     (21, 63),
     (5, 149),
     (43, 110),
     (26, 42),
     (33, 52),
     (21, 181),
     (53, 185),
     (56, 147),
     (94, 128),
     (5, 38),
     (119, 136),
     (27, 106),
     (103, 153),
     (106, 143),
     (52, 71),
     (35, 137),
     (18, 179),
     (58, 167),
     (13, 75),
     (6, 79),
     (82, 148),
     (63, 138),
     (40, 82),
     (175, 182),
     (31, 93),
     (43, 59),
     (111, 158),
     (3, 31),
     (45, 177),
     (143, 147),
     (18, 85),
     (74, 182),
     (21, 56),
     (80, 81),
     (43, 103),
     (26, 53),
     (28, 158),
     (12, 64),
     (34, 181),
     (3, 77),
     (73, 118),
     (37, 88),
     (58, 63),
     (5, 47),
     (6, 183),
     (7, 138),
     (27, 36),
     (103, 150),
     (18, 170),
     (19, 127),
     (76, 116),
     (18, 187),
     (21, 38),
     (164, 172),
     (124, 149),
     (38, 56),
     (8, 123),
     (120, 149),
     (28, 102),
     (85, 115),
     (33, 85),
     (143, 152),
     (16, 167),
     (1, 12),
     (3, 135),
     (21, 65),
     (115, 154),
     (25, 134),
     (7, 114),
     (173, 187),
     (28, 149),
     (50, 134),
     (56, 161),
     (37, 65),
     (5, 40),
     (104, 121),
     (30, 32),
     (52, 85),
     (35, 183),
     (79, 166),
     (101, 117),
     (85, 139),
     (31, 67),
     (14, 137),
     (144, 152),
     (18, 52),
     (6, 40),
     (38, 51),
     (3, 111),
     (97, 152),
     (149, 167),
     (18, 82),
     (65, 119),
     (28, 125),
     (85, 124),
     (140, 172),
     (14, 56),
     (18, 71),
     (165, 180),
     (58, 94),
     (5, 128),
     (173, 180),
     (51, 53),
     (53, 148),
     (36, 124),
     (121, 128),
     (51, 57),
     (6, 161),
     (172, 185),
     (30, 43),
     (39, 149),
     (28, 58),
     (76, 106),
     (23, 24),
     (63, 161),
     (83, 168),
     (85, 148),
     (35, 128),
     (18, 47),
     (37, 172),
     (97, 145),
     (42, 185),
     (120, 163),
     (47, 125),
     (122, 139),
     (87, 172),
     (44, 84),
     (27, 180),
     (47, 185),
     (30, 131),
     (51, 58),
     (52, 180),
     (15, 32),
     (73, 105),
     (36, 123),
     (77, 156),
     (97, 115),
     (6, 152),
     (27, 37),
     (137, 146),
     (16, 135),
     (54, 180),
     (19, 146),
     (76, 97),
     (79, 180),
     (63, 174),
     (49, 65),
     (50, 81),
     (106, 114),
     (14, 155),
     (18, 38),
     (38, 45),
     (3, 93),
     (97, 170),
     (51, 149),
     (28, 115),
     (122, 146),
     (67, 184),
     (150, 163),
     (51, 146),
     (90, 123),
     (54, 109),
     (165, 166),
     (25, 153),
     (21, 150),
     (124, 174),
     (52, 179),
     (36, 98),
     (94, 103),
     (4, 139),
     (102, 168),
     (6, 147),
     (62, 76),
     (137, 155),
     (103, 186),
     (35, 170),
     (54, 143),
     (19, 155),
     (114, 154),
     (149, 150),
     (23, 46),
     (82, 115),
     (85, 166),
     (36, 57),
     (141, 159),
     (18, 33),
     (110, 150),
     (75, 80),
     (39, 174),
     (23, 159),
     (157, 163),
     (57, 123),
     (76, 177),
     (114, 124),
     (47, 65),
     (46, 87),
     (47, 79),
     (54, 56),
     (16, 102),
     (128, 149),
     (2, 9),
     (94, 110),
     (24, 38),
     (6, 138),
     (27, 51),
     (154, 172),
     (122, 127),
     (103, 179),
     (34, 67),
     (59, 175),
     (37, 163),
     (23, 39),
     (65, 162),
     (88, 178),
     (18, 24),
     (110, 153),
     (19, 45),
     (40, 53),
     (88, 115),
     (23, 148),
     (138, 183),
     (28, 65),
     (3, 112),
     (87, 187),
     (53, 71),
     (54, 127),
     (114, 119),
     (115, 127),
     (79, 109),
     (26, 27),
     (7, 79),
     (46, 94),
     (123, 143),
     (24, 128),
     (17, 97),
     (71, 178),
     (19, 56),
     (77, 135),
     (119, 123),
     (66, 101),
     (75, 89),
     (103, 168),
     (178, 180),
     (18, 128),
     (34, 135),
     (32, 120),
     (40, 173),
     (114, 140),
     (60, 176),
     (25, 82),
     (6, 28),
     (18, 178),
     (36, 103),
     (88, 185),
     (166, 178),
     (91, 132),
     (93, 184),
     (28, 88),
     (163, 168),
     (58, 125),
     (21, 119),
     (149, 162),
     (170, 172),
     (79, 106),
     (26, 98),
     (83, 111),
     (106, 180),
     (124, 187),
     (17, 90),
     (36, 159),
     (112, 131),
     (42, 98),
     (61, 113),
     (62, 97),
     (103, 161),
     (52, 63),
     (40, 148),
     (21, 158),
     (24, 163),
     (23, 53),
     (79, 136),
     (45, 104),
     (85, 177),
     (88, 128),
     (14, 119),
     (90, 172),
     (35, 46),
     (20, 151),
     (39, 85),
     (11, 41),
     (8, 155),
     (154, 166),
     (46, 103),
     (42, 109),
     (88, 172),
     (6, 127),
     (137, 183),
     (19, 183),
     (21, 167),
     (79, 145),
     (65, 181),
     (28, 63),
     (70, 107),
     (71, 123),
     (113, 129),
     (39, 82),
     (23, 163),
     (8, 51),
     (63, 88),
     (47, 122),
     (122, 177),
     (120, 141),
     (16, 51),
     (72, 80),
     (53, 82),
     (61, 84),
     (21, 121),
     (149, 180),
     (52, 120),
     (121, 178),
     (123, 146),
     (106, 166),
     (52, 158),
     (19, 79),
     (38, 153),
     (150, 157),
     (136, 145),
     (9, 101),
     (139, 140),
     (82, 159),
     (56, 114),
     (34, 103),
     (35, 79),
     (114, 185),
     (25, 37),
     (49, 159),
     (32, 49),
     (16, 128),
     (135, 186),
     (18, 124),
     (110, 181),
     (147, 173),
     (115, 170),
     (116, 145),
     (14, 146),
     (63, 65),
     (150, 186),
     (36, 37),
     (2, 117),
     (94, 162),
     (115, 146),
     (82, 164),
     (8, 137),
     (121, 187),
     (47, 104),
     (88, 119),
     (51, 109),
     (52, 57),
     (36, 180),
     (77, 171),
     (136, 152),
     (30, 99),
     (127, 143),
     (46, 51),
     (25, 46),
     (46, 163),
     (172, 187),
     (88, 149),
     (141, 181),
     (90, 185),
     (143, 177),
     (18, 119),
     (147, 178),
     (21, 26),
     (95, 103),
     (116, 152),
     (47, 128),
     (53, 164),
     (92, 129),
     (79, 138),
     (46, 125),
     (71, 143),
     (36, 179),
     (58, 128),
     (8, 140),
     (5, 82),
     (27, 33),
     (137, 170),
     (154, 183),
     (31, 120),
     (127, 180),
     (21, 178),
     (59, 99),
     (138, 139),
     (140, 155),
     (65, 149),
     (141, 174),
     (103, 120),
     (71, 102),
     (90, 170),
     (146, 187),
     (147, 187),
     (20, 171),
     (21, 35),
     (8, 40),
     (63, 119),
     (47, 137),
     (120, 125),
     (16, 24),
     (53, 173),
     (54, 85),
     (57, 170),
     (94, 172),
     (79, 87),
     (8, 183),
     (104, 139),
     (123, 185),
     (106, 147),
     (51, 123),
     (83, 163),
     (37, 52),
     (77, 93),
     (63, 158),
     (10, 22),
     (92, 113),
     (77, 168),
     (40, 119),
     (21, 187),
     (138, 178),
     (85, 94),
     (140, 146),
     (51, 162),
     (141, 167),
     (3, 158),
     (146, 178),
     (166, 177),
     (8, 47),
     (48, 70),
     (29, 60),
     (58, 161),
     (34, 169),
     (36, 82),
     (57, 179),
     (148, 161),
     (5, 51),
     (106, 154),
     (33, 170),
     (16, 174),
     (109, 127),
     (36, 161),
     (6, 82),
     (82, 163),
     (14, 178),
     (155, 179),
     (39, 158),
     (24, 141),
     (23, 111),
     (8, 71),
     (64, 100),
     (46, 180),
     (85, 103),
     (32, 93),
     (90, 146),
     (146, 173),
     (38, 103),
     (21, 53),
     (4, 19),
     (25, 178),
     (99, 151),
     (104, 106),
     (36, 94),
     (37, 85),
     (57, 180),
     (94, 158),
     (67, 112),
     (153, 163),
     (8, 165),
     (119, 178),
     (156, 184),
     (123, 183),
     (23, 93),
     (52, 121),
     (17, 41),
     (18, 185),
     (56, 124),
     (37, 38),
     (58, 157),
     (6, 85),
     (136, 180),
     (135, 164),
     (24, 148),
     (45, 183),
     (33, 90),
     (87, 139),
     (109, 154),
     (76, 152),
     (5, 148),
     (4, 140),
     (44, 113),
     (7, 127),
     (63, 98),
     (48, 116),
     (47, 164),
     (37, 94),
     (5, 37),
     (153, 164),
     (8, 172),
     (7, 140),
     (10, 176),
     (106, 140),
     (33, 164),
     (16, 162),
     (35, 136),
     (19, 121),
     (58, 164),
     (93, 153),
     (25, 98),
     (82, 149),
     (63, 181),
     (139, 166),
     (159, 167),
     (36, 173),
     (39, 125),
     (111, 153),
     (3, 96),
     (4, 114),
     (23, 125),
     (28, 104),
     (49, 181),
     (51, 185),
     (14, 47),
     (34, 49),
     (143, 146),
     (109, 147),
     (1, 10),
     (57, 85),
     (21, 71),
     (48, 107),
     (47, 173),
     (30, 175),
     (30, 49),
     (56, 155),
     (37, 71),
     (4, 144),
     (5, 46),
     (6, 180),
     (51, 87),
     (35, 177),
     (37, 40),
     (38, 174),
     (26, 63),
     (6, 71),
     (63, 178),
     (157, 169),
     (161, 174),
     (18, 58),
     (37, 185),
     (38, 57),
     (28, 148),
     (4, 121),
     (26, 138),
     (65, 125),
     (28, 103),
     (98, 154),
     (85, 114),
     (14, 54),
     (143, 155),
     (109, 140),
     (57, 94),
     (4, 8),
     (7, 109),
     (46, 56),
     (47, 170),
     (157, 181),
     (52, 167),
     (53, 138),
     (93, 99),
     (131, 135),
     (88, 164),
     (9, 44),
     (111, 151),
     (161, 178),
     (18, 162),
     (54, 187),
     (38, 161),
     (31, 184),
     (20, 30),
     (85, 138),
     (161, 167),
     (18, 53),
     (37, 162),
     (40, 90),
     (62, 130),
     (120, 157),
     (40, 71),
     (85, 123),
     (140, 173),
     (33, 109),
     (159, 174),
     (57, 103),
     (58, 95),
     (7, 106),
     (47, 179),
     (51, 52),
     (52, 174),
     (36, 125),
     (2, 61),
     (78, 133),
     (6, 166),
     (103, 135),
     (54, 178),
     (19, 140),
     (40, 178),
     (24, 65),
     (43, 175),
     (10, 60),
     (85, 147),
     (14, 145),
     (180, 185),
     (40, 65),
     (97, 144),
     (8, 106),
     (38, 95),
     (45, 155),
     (122, 136),
     (32, 112),
     (33, 102),
     (145, 183),
     (1, 29),
     (15, 67),
     (58, 102),
     (21, 82),
     (22, 64),
     (43, 77),
     (99, 184),
     (121, 139),
     (63, 146),
     (58, 168),
     (52, 181),
     (19, 36),
     (94, 125),
     (64, 176),
     (172, 177),
     (137, 145),
     (31, 163),
     (18, 148),
     (40, 185),
     (130, 144),
     (77, 108),
     (43, 164),
     (79, 183),
     (106, 115),
     (14, 152),
     (35, 53),
     (18, 39),
     (33, 71),
     (122, 147),
     (157, 164),
     (33, 127),
     (1, 22),
     (95, 164),
     (121, 140),
     (104, 180),
     (96, 112),
     (56, 183),
     (55, 129),
     (61, 101),
     (137, 154),
     (47, 54),
     (157, 159),
     (31, 168),
     (35, 173),
     (18, 143),
     (54, 140),
     (19, 154),
     (114, 155),
     (6, 35),
     (45, 124),
     (47, 109),
     (102, 119),
     (107, 118),
     (106, 122),
     (3, 108),
     (23, 158),
     (122, 154),
     (51, 154),
     (53, 125),
     (149, 159),
     (97, 116),
     (83, 96),
     (121, 149),
     (104, 187),
     (123, 137),
     (16, 103),
     (71, 180),
     (128, 150),
     (24, 39),
     (53, 57),
     (6, 139),
     (62, 116),
     (119, 125),
     (102, 159),
     (47, 63),
     (114, 146),
     (6, 26),
     (65, 161),
     (102, 110),
     (159, 172),
     (88, 179),
     (14, 106),
     (18, 25),
     (110, 158),
     (40, 54),
     (23, 151),
     (65, 82),
     (122, 165),
     (145, 154),
     (54, 124),
     (96, 162),
     (78, 118),
     (44, 66),
     (27, 154),
     (46, 95),
     (47, 87),
     (16, 94),
     (71, 173),
     (36, 145),
     (24, 46),
     (9, 113),
     (119, 122),
     (102, 150),
     (139, 152),
     (123, 127),
     (31, 158),
     (15, 175),
     (40, 174),
     (21, 148),
     (24, 93),
     (23, 63),
     (82, 98),
     (65, 186),
     (24, 52),
     (85, 183),
     (13, 69),
     (14, 109),
     (90, 162),
     (35, 40),
     (30, 67),
     (110, 161),
     (38, 87),
     (42, 154),
     (116, 133),
     (7, 54),
     (63, 85),
     (122, 172),
     (32, 156),
     (87, 179),
     (145, 147),
     (54, 119),
     (149, 161),
     (170, 173),
     (7, 71),
     (46, 102),
     (124, 180),
     (16, 85),
     (71, 170),
     (50, 72),
     (6, 7),
     (24, 53),
     (5, 125),
     (53, 149),
     (139, 145),
     (31, 135),
     (127, 147),
     (54, 145),
     (19, 177),
     (40, 149),
     (4, 119),
     (24, 164),
     (25, 90),
     (79, 139),
     (65, 179),
     (28, 33),
     (138, 148),
     (143, 165),
     (110, 168),
     (3, 184),
     (15, 131),
     (116, 140),
     (9, 129),
     (63, 82),
     (122, 183),
     (141, 186),
     (102, 174),
     (65, 103),
     (143, 170),
     (79, 114),
     (26, 106),
     (27, 104),
     (124, 179),
     (77, 184),
     (42, 106),
     (6, 57),
     (6, 124),
     (62, 105),
     (67, 126),
     (125, 172),
     (91, 100),
     (112, 175),
     (95, 120),
     (46, 150),
     (85, 185),
     (32, 59),
     (14, 127),
     (71, 122),
     (110, 179),
     (38, 65),
     (21, 23),
     (116, 139),
     (7, 36),
     (18, 159),
     (67, 156),
     (16, 52),
     (72, 81),
     (36, 63),
     (57, 150),
     (21, 120),
     (149, 179),
     (79, 123),
     (121, 177),
     (51, 103),
     (52, 159),
     (6, 119),
     (136, 146),
     (139, 143),
     (23, 25),
     (39, 63),
     (92, 101),
     (6, 51),
     (25, 36),
     (65, 141),
     (46, 153),
     (49, 158),
     (3, 43),
     (18, 125),
     (110, 186),
     (147, 172),
     (122, 185),
     (23, 52),
     (34, 157),
     (53, 90),
     (36, 38),
     (57, 159),
     (148, 149),
     (151, 168),
     (8, 138),
     (7, 178),
     (46, 123),
     (128, 187),
     (123, 170),
     (33, 134),
     (52, 102),
     (18, 181),
     (26, 125),
     (5, 104),
     (31, 49),
     (102, 178),
     (30, 96),
     (35, 119),
     (40, 138),
     (114, 177),
     (46, 120),
     (49, 151),
     (88, 150),
     (90, 134),
     (71, 104),
     (153, 168),
     (21, 25),
     (115, 178),
     (71, 125),
     (48, 73),
     (32, 184),
     (33, 46),
     (34, 148),
     (36, 45),
     (98, 185),
     (94, 168),
     (8, 177),
     (27, 127),
     (119, 166),
     (88, 127),
     (30, 59),
     (56, 104),
     (88, 94),
     (82, 174),
     (35, 124),
     (127, 183),
     (102, 158),
     (23, 88),
     (26, 172),
     (7, 47),
     (143, 185),
     (39, 120),
     (82, 180),
     (7, 19),
     (28, 180),
     (163, 174),
     (76, 122),
     (16, 25),
     (53, 172),
     (56, 128),
     (156, 171),
     (47, 121),
     (106, 144),
     (51, 122),
     (16, 168),
     (15, 96),
     (36, 187),
     (37, 51),
     (20, 93),
     (150, 167),
     (6, 88),
     (63, 153),
     (102, 172),
     (139, 178),
     (135, 153),
     (31, 96),
     (159, 181),
     (24, 135),
     (25, 63),
     (26, 183),
     (46, 178),
     (140, 147),
     (71, 94),
     (18, 102),
     (57, 65),
     (5, 161),
     (82, 110),
     (7, 8),
     (63, 127),
     (28, 179),
     (98, 172),
     (128, 161),
     (53, 181),
     (57, 178),
     (94, 148),
     (24, 186),
     (119, 180),
     (123, 177),
     (3, 120),
     (36, 162),
     (19, 106),
     (24, 31),
     (135, 174),
     (155, 161),
     (158, 174),
     (127, 165),
     (40, 127),
     (39, 153),
     (59, 112),
     (23, 110),
     (33, 94),
     (69, 72),
     (46, 181),
     (85, 102),
     (51, 170),
     (87, 141),
     (71, 87),
     (146, 170),
     (26, 143),
     (21, 52),
     (26, 33),
     (28, 138),
     (65, 120),
     (16, 23),
     (38, 63),
     (36, 90),
     (94, 159),
     (59, 171),
     (22, 29),
     (6, 187),
     (8, 166),
     (106, 130),
     (33, 162),
     (14, 180),
     (108, 111),
     (109, 119),
     (32, 111),
     (20, 99),
     (24, 102),
     (155, 166),
     (17, 185),
     (183, 187),
     (39, 150),
     (4, 116),
     (24, 149),
     (23, 103),
     (8, 79),
     (121, 125),
     (138, 165),
     (51, 179),
     (87, 138),
     (90, 154),
     (18, 88),
     (146, 165),
     (39, 103),
     (43, 96),
     (26, 40),
     (27, 170),
     (46, 47),
     (47, 167),
     (124, 141),
     (36, 65),
     (4, 170),
     (5, 36),
     (6, 178),
     (8, 173),
     (7, 143),
     (119, 138),
     (135, 168),
     (52, 65),
     (35, 139),
     (37, 46),
     (38, 180),
     (76, 127),
     (82, 146),
     (63, 180),
     (127, 152),
     (27, 46),
     (86, 160),
     (17, 178),
     (39, 52),
     (164, 167),
     (40, 109),
     (3, 99),
     (149, 153),
     (138, 172),
     (85, 104),
     (33, 82),
     (109, 146),
     (76, 144),
     (26, 51),
     (7, 119),
     (46, 54),
     (47, 172),
     (52, 164),
     (73, 116),
     (128, 180),
     (4, 145),
     (5, 45),
     (161, 179),
     (16, 148),
     (17, 26),
     (54, 161),
     (58, 172),
     (132, 160),
     (155, 180),
     (154, 177),
     (85, 128),
     (12, 160),
     (161, 173),
     (164, 174),
     (55, 66),
     (4, 122),
     (25, 27),
     (65, 124),
     (140, 183),
     (143, 154),
     (109, 139),
     (46, 187),
     (76, 143),
     (173, 185),
     (46, 57),
     (30, 151),
     (36, 119),
     (4, 152),
     (6, 172),
     (119, 152),
     (29, 176),
     (52, 87),
     (35, 185),
     (181, 186),
     (76, 109),
     (25, 115),
     (6, 63),
     (136, 170),
     (85, 137),
     (31, 77),
     (14, 143),
     (23, 162),
     (10, 64),
     (37, 161),
     (4, 97),
     (25, 28),
     (26, 146),
     (45, 161),
     (28, 127),
     (85, 122),
     (90, 119),
     (165, 178),
     (96, 135),
     (145, 170),
     (173, 178),
     (47, 178),
     (177, 183),
     (53, 146),
     (56, 170),
     (26, 47),
     (167, 174),
     (98, 102),
     (9, 84),
     (119, 145),
     (52, 94),
     (54, 179),
     (19, 143),
     (40, 179),
     (6, 54),
     (82, 127),
     (104, 109),
     (170, 178),
     (85, 146),
     (43, 184),
     (21, 149),
     (144, 145),
     (18, 45),
     (38, 40),
     (4, 104),
     (122, 137),
     (140, 165),
     (51, 143),
     (54, 104),
     (58, 103),
     (96, 158),
     (25, 150),
     (104, 178),
     (121, 138),
     (47, 187),
     (56, 177),
     (94, 98),
     (5, 24),
     (57, 185),
     (172, 178),
     (58, 141),
     (16, 110),
     (15, 83),
     (18, 149),
     (54, 138),
     (130, 145),
     (25, 125),
     (111, 162),
     (102, 125),
     (85, 155),
     (13, 89),
     (107, 130),
     (18, 36),
     (110, 141),
     (93, 171),
     (39, 179),
     (32, 99),
     (8, 18),
     (62, 165),
     (45, 147),
     (67, 186),
     (51, 148),
     (87, 167),
     (58, 110),
     (95, 167),
     (170, 177),
     (25, 159),
     (27, 143),
     (121, 147),
     (126, 156),
     (39, 43),
     (174, 186),
     (6, 145),
     (10, 92),
     (80, 89),
     (31, 171),
     (35, 172),
     (104, 127),
     (40, 161),
     (114, 152),
     (57, 63),
     (23, 40),
     (45, 123),
     (15, 43),
     (85, 164),
     (106, 123),
     (141, 157),
     (3, 151),
     (110, 148),
     (93, 164),
     (39, 168),
     (23, 153),
     (64, 86),
     (45, 140),
     (122, 155),
     (33, 119),
     (14, 19),
     (53, 124),
     (54, 122),
     (165, 173),
     (114, 122),
     (149, 158),
     (118, 133),
     (46, 85),
     (12, 29),
     (124, 167),
     (16, 88),
     (126, 135),
     (71, 183),
     (24, 40),
     (98, 115),
     (6, 136),
     (27, 53),
     (125, 128),
     (35, 85),
     (114, 147),
     (6, 27),
     (115, 134),
     (85, 173),
     (88, 180),
     (141, 150),
     (96, 184),
     (110, 159),
     (20, 131),
     (39, 161),
     (23, 150),
     (7, 56),
     (120, 186),
     (87, 181),
     (76, 170),
     (96, 163),
     (95, 149),
     (16, 95),
     (71, 172),
     (36, 146),
     (137, 139),
     (139, 155),
     (36, 114),
     (125, 153),
     (114, 138),
     (24, 94),
     (6, 18),
     (106, 109),
     (14, 114),
     (147, 152),
     (39, 94),
     (4, 76),
     (28, 90),
     (122, 173),
     (145, 146),
     (98, 146),
     (27, 146),
     (121, 166),
     (104, 170),
     (106, 178),
     (124, 181),
     (52, 138),
     (36, 153),
     (5, 124),
     (6, 122),
     (137, 140),
     (67, 120),
     (103, 163),
     (125, 146),
     (127, 146),
     (40, 150),
     (43, 131),
     (6, 21),
     (82, 90),
     (138, 149),
     (49, 95),
     (70, 118),
     (71, 124),
     (33, 88),
     (23, 164),
     (8, 14),
     (122, 180),
     (53, 87),
     (54, 79),
     (3, 23),
     (46, 110),
     (104, 145),
     (76, 104),
     (125, 148),
     (36, 128),
     (6, 125),
     (66, 117),
     (16, 43),
     (127, 155),
     (19, 185),
     (60, 64),
     (79, 147),
     (82, 85),
     (20, 32),
     (28, 57),
     (70, 105),
     (143, 173),
     (147, 166),
     (63, 90),
     (29, 86),
     (94, 163),
     (32, 171),
     (16, 53),
     (36, 56),
     (57, 149),
     (94, 185),
     (95, 128),
     (79, 122),
     (7, 180),
     (104, 152),
     (51, 102),
     (3, 15),
     (15, 20),
     (71, 155),
     (36, 143),
     (38, 159),
     (5, 110),
     (61, 129),
     (136, 147),
     (148, 163),
     (27, 102),
     (87, 123),
     (125, 164),
     (162, 174),
     (114, 183),
     (24, 179),
     (79, 152),
     (46, 158),
     (37, 159),
     (49, 157),
     (128, 148),
     (14, 71),
     (71, 114),
     (38, 121),
     (115, 172),
     (5, 181),
     (23, 186),
     (51, 88),
     (16, 186),
     (72, 89),
     (36, 39),
     (57, 158),
     (148, 150),
     (24, 37),
     (8, 139),
     (7, 173),
     (121, 185),
     (123, 173),
     (88, 121),
     (52, 103),
     (38, 150),
     (5, 87),
     (136, 154),
     (96, 108),
     (18, 103),
     (127, 137),
     (96, 120),
     (60, 86),
     (26, 162),
     (46, 161),
     (84, 92),
     (49, 150),
     (141, 179),
     (3, 156),
     (109, 180),
     (147, 180),
     (21, 24),
     (53, 110),
     (8, 35),
     (104, 119),
     (34, 149),
     (53, 162),
     (36, 46),
     (148, 157),
     (171, 184),
     (4, 183),
     (8, 178),
     (7, 170),
     (119, 161),
     (33, 158),
     (52, 110),
     (71, 137),
     (102, 170),
     (14, 166),
     (35, 127),
     (0, 11),
     (162, 168),
     (25, 53),
     (26, 173),
     (65, 158),
     (88, 158),
     (53, 58),
     (109, 173),
     (146, 185),
     (79, 187),
     (21, 33),
     (95, 110),
     (5, 167),
     (7, 18),
     (47, 139),
     (65, 163),
     (3, 30),
     (36, 85),
     (148, 164),
     (59, 156),
     (26, 109),
     (8, 185),
     (27, 119),
     (123, 187),
     (106, 145),
     (51, 125),
     (15, 99),
     (36, 164),
     (38, 128),
     (24, 25),
     (150, 164),
     (53, 159),
     (83, 131),
     (67, 93),
     (30, 83),
     (56, 173),
     (40, 121),
     (21, 185),
     (60, 100),
     (26, 180),
     (46, 179),
     (42, 134),
     (51, 164),
     (109, 166),
     (166, 183),
     (152, 183),
     (4, 130),
     (26, 39),
     (40, 52),
     (12, 86),
     (23, 95),
     (33, 63),
     (88, 161),
     (53, 180),
     (56, 136),
     (1, 86),
     (2, 92),
     (94, 149),
     (4, 165),
     (7, 152),
     (119, 183),
     (106, 152),
     (56, 119),
     (19, 109),
     (38, 187),
     (136, 143),
     (102, 164),
     (139, 170),
     (5, 103),
     (35, 109),
     (120, 131),
     (121, 123),
     (138, 187),
     (51, 173),
     (14, 35),
     (18, 94),
     (120, 181),
     (21, 51),
     (115, 136),
     (26, 46),
     (63, 103),
     (30, 163),
     (56, 143),
     (4, 172),
     (5, 58),
     (82, 161),
     (7, 145),
     (119, 140),
     (103, 157),
     (52, 123),
     (36, 170),
     (19, 114),
     (24, 103),
     (57, 125),
     (34, 163),
     (30, 93),
     (16, 34),
     (14, 187),
     (127, 173),
     (6, 53),
     (40, 103),
     (28, 154),
     (24, 150),
     (23, 102),
     (26, 134),
     (121, 124),
     (85, 110),
     (51, 178),
     (71, 79),
     (109, 152),
     (57, 82),
     (76, 154),
     (39, 102),
     (162, 178),
     (5, 146),
     (25, 185),
     (7, 121),
     (48, 118),
     (47, 166),
     (105, 107),
     (6, 14),
     (5, 35),
     (6, 179),
     (26, 88),
     (27, 90),
     (106, 138),
     (16, 158),
     (35, 138),
     (18, 174),
     (19, 123),
     (38, 181),
     (58, 162),
     (26, 71),
     (157, 174),
     (105, 133),
     (127, 170),
     (55, 68),
     (40, 110),
     (93, 175),
     (24, 157),
     (167, 186),
     (8, 119),
     (138, 173),
     (85, 119),
     (140, 185),
     (14, 45),
     (90, 98),
     (109, 145),
     (76, 145),
     (5, 155),
     (171, 175),
     (27, 162),
     (28, 153),
     (128, 181),
     (59, 184),
     (4, 146),
     (6, 170),
     (87, 140),
     (16, 149),
     (35, 179),
     (54, 166),
     (38, 172),
     (82, 138),
     (155, 183),
     (85, 143),
     (175, 184),
     (161, 172),
     (16, 150),
     (17, 170),
     (18, 56),
     (37, 167),
     (40, 85),
     (4, 123),
     (42, 178),
     (25, 26),
     (26, 136),
     (33, 106),
     (87, 155),
     (90, 109),
     (53, 103),
     (109, 138),
     (76, 136),
     (3, 153),
     (31, 156),
     (47, 180),
     (52, 161),
     (32, 96),
     (5, 21),
     (6, 173),
     (27, 40),
     (119, 155),
     (51, 94),
     (34, 58),
     (54, 185),
     (19, 137),
     (38, 167),
     (77, 120),
     (49, 120),
     (23, 28),
     (85, 136),
     (49, 67),
     (14, 140),
     (18, 51),
     (110, 128),
     (38, 54),
     (162, 163),
     (120, 159),
     (122, 143),
     (85, 121),
     (165, 177),
     (21, 87),
     (152, 154),
     (43, 67),
     (173, 177),
     (46, 65),
     (128, 167),
     (124, 155),
     (36, 127),
     (37, 119),
     (94, 120),
     (172, 180),
     (35, 161),
     (18, 155),
     (112, 151),
     (40, 180),
     (63, 162),
     (85, 145),
     (65, 159),
     (180, 187),
     (153, 161),
     (39, 181),
     (26, 154),
     (28, 119),
     (140, 166),
     (90, 127),
     (57, 110),
     (170, 183),
     (25, 149),
     (121, 137),
     (51, 63),
     (17, 115),
     (56, 178),
     (4, 143),
     (5, 7),
     (172, 179),
     (172, 173),
     (49, 163),
     (125, 141),
     (35, 166),
     (18, 146),
     (54, 139),
     (40, 187),
     (3, 49),
     (41, 134),
     (79, 177),
     (82, 119),
     (96, 175),
     (85, 154),
     (107, 133),
     (18, 37),
     (23, 131),
     (8, 19),
     (45, 146),
     (122, 145),
     (33, 125),
     (110, 125),
     (57, 119),
     (154, 170),
     (98, 134),
     (25, 158),
     (83, 93),
     (121, 146),
     (71, 185),
     (36, 109),
     (19, 47),
     (24, 34),
     (27, 63),
     (137, 152),
     (87, 121),
     (18, 141),
     (40, 162),
     (21, 128),
     (77, 99),
     (23, 43),
     (33, 39),
     (45, 122),
     (66, 129),
     (88, 174),
     (18, 28),
     (110, 149),
     (93, 163),
     (116, 177),
     (8, 26),
     (45, 139),
     (122, 152),
     (96, 111),
     (53, 123),
     (54, 123),
     (114, 123),
     (149, 157),
     (170, 185),
     (99, 168),
     (121, 155),
     (123, 139),
     (17, 109),
     (36, 148),
     (37, 98),
     (37, 181),
     (6, 137),
     (27, 52),
     (119, 127),
     (47, 57),
     (99, 175),
     (125, 159),
     (19, 165),
     (24, 88),
     (23, 32),
     (81, 89),
     (65, 167),
     (85, 172),
     (31, 32),
     (14, 104),
     (18, 23),
     (40, 56),
     (167, 179),
     (99, 131),
     (104, 140),
     (67, 171),
     (32, 135),
     (87, 180),
     (145, 152),
     (54, 114),
     (39, 49),
     (52, 82),
     (26, 102),
     (56, 71),
     (93, 131),
     (5, 114),
     (61, 117),
     (100, 176),
     (137, 138),
     (102, 148),
     (139, 154),
     (0, 41),
     (19, 170),
     (21, 146),
     (59, 67),
     (24, 95),
     (23, 57),
     (6, 19),
     (46, 138),
     (102, 103),
     (110, 167),
     (147, 155),
     (38, 85),
     (23, 174),
     (51, 153),
     (63, 87),
     (122, 170),
     (57, 138),
     (58, 120),
     (39, 46),
     (95, 157),
     (79, 119),
     (83, 112),
     (48, 62),
     (47, 94),
     (43, 99),
     (71, 164),
     (36, 154),
     (58, 174),
     (42, 97),
     (5, 123),
     (6, 123),
     (27, 173),
     (139, 147),
     (103, 162),
     (52, 58),
     (96, 168),
     (25, 88),
     (46, 141),
     (138, 146),
     (14, 122),
     (71, 127),
     (110, 174),
     (28, 82),
     (16, 63),
     (21, 125),
     (98, 170),
     (26, 104),
     (154, 165),
     (104, 146),
     (33, 138),
     (52, 146),
     (56, 85),
     (26, 127),
     (150, 153),
     (6, 114),
     (137, 180),
     (49, 110),
     (87, 125),
     (125, 170),
     (127, 154),
     (40, 158),
     (21, 164),
     (25, 33),
     (79, 146),
     (65, 138),
     (46, 148),
     (88, 138),
     (90, 178),
     (143, 172),
     (28, 174),
     (20, 43),
     (93, 135),
     (38, 71),
     (3, 163),
     (8, 54),
     (93, 111),
     (34, 128),
     (54, 71),
     (57, 148),
     (26, 115),
     (7, 183),
     (121, 183),
     (98, 119),
     (106, 165),
     (52, 153),
     (71, 154),
     (36, 136),
     (77, 175),
     (102, 185),
     (87, 122),
     (125, 163),
     (1, 160),
     (114, 180),
     (79, 155),
     (45, 87),
     (46, 159),
     (70, 97),
     (71, 109),
     (18, 123),
     (3, 168),
     (5, 180),
     (23, 181),
     (67, 135),
     (32, 163),
     (25, 168),
     (53, 88),
     (94, 161),
     (149, 186),
     (26, 122),
     (7, 172),
     (46, 121),
     (123, 172),
     (106, 172),
     (51, 110),
     (126, 171),
     (71, 147),
     (36, 183),
     (90, 94),
     (41, 68),
     (42, 90),
     (136, 155),
     (63, 149),
     (137, 166),
     (35, 121),
     (127, 136),
     (25, 51),
     (8, 85),
     (138, 143),
     (14, 79),
     (143, 178),
     (18, 114),
     (147, 183),
     (20, 175),
     (21, 39),
     (152, 170),
     (8, 36),
     (47, 141),
     (16, 36),
     (53, 161),
     (36, 47),
     (148, 158),
     (151, 163),
     (7, 165),
     (47, 114),
     (123, 165),
     (51, 119),
     (16, 179),
     (35, 145),
     (71, 136),
     (150, 162),
     (82, 172),
     (45, 56),
     (158, 162),
     (125, 181),
     (127, 177),
     (92, 117),
     (37, 153),
     (40, 115),
     (114, 166),
     (25, 52),
     (26, 170),
     (65, 157),
     (88, 159),
     (143, 187),
     (109, 172),
     (152, 177),
     (20, 135),
     (47, 138),
     (33, 37),
     (53, 170),
     (2, 66),
     (39, 111),
     (154, 185),
     (119, 185),
     (47, 123),
     (103, 110),
     (49, 171),
     (58, 150),
     (93, 156),
     (5, 88),
     (136, 137),
     (102, 162),
     (139, 180),
     (159, 186),
     (21, 110),
     (40, 122),
     (65, 150),
     (138, 177),
     (49, 135),
     (141, 164),
     (71, 88),
     (109, 165),
     (146, 177),
     (57, 71),
     (166, 180),
     (25, 174),
     (26, 36),
     (63, 121),
     (47, 147),
     (16, 18),
     (53, 179),
     (56, 137),
     (148, 172),
     (4, 166),
     (53, 121),
     (7, 155),
     (52, 125),
     (0, 107),
     (36, 172),
     (37, 58),
     (77, 83),
     (5, 65),
     (82, 158),
     (63, 128),
     (139, 173),
     (14, 177),
     (39, 58),
     (164, 179),
     (95, 169),
     (45, 187),
     (121, 122),
     (51, 172),
     (87, 143),
     (57, 161),
     (44, 117),
     (63, 102),
     (11, 68),
     (43, 135),
     (37, 82),
     (2, 84),
     (4, 173),
     (5, 57),
     (6, 185),
     (26, 94),
     (119, 143),
     (15, 112),
     (18, 180),
     (56, 127),
     (38, 179),
     (24, 110),
     (67, 175),
     (136, 183),
     (49, 103),
     (21, 102),
     (127, 172),
     (164, 186),
     (40, 104),
     (97, 109),
     (45, 180),
     (84, 113),
     (85, 109),
     (51, 54),
     (153, 179),
     (58, 65),
     (27, 172),
     (47, 161),
     (30, 171),
     (49, 186),
     (93, 110),
     (97, 107),
     (7, 137),
     (103, 149),
     (106, 139),
     (33, 185),
     (16, 159),
     (54, 172),
     (19, 122),
     (58, 163),
     (25, 103),
     (133, 142),
     (135, 158),
     (155, 177),
     (97, 130),
     (24, 158),
     (45, 173),
     (138, 170),
     (39, 110),
     (146, 154),
     (57, 90),
     (76, 146),
     (53, 104),
     (46, 52),
     (177, 187),
     (93, 103),
     (4, 147),
     (27, 82),
     (33, 178),
     (40, 94),
     (35, 178),
     (79, 165),
     (136, 165),
     (135, 151),
     (14, 138),
     (144, 165),
     (18, 57),
     (164, 168),
     (111, 163),
     (8, 127),
     (45, 166),
     (28, 98),
     (85, 127),
     (140, 177),
     (43, 150),
     (159, 162),
     (90, 106),
     (53, 102),
     (109, 137),
     (165, 183),
     (76, 137),
     (95, 135),
     (25, 138),
     (173, 183),
     (46, 63),
     (47, 183),
     (52, 162),
     (128, 141),
     (93, 96),
     (4, 154),
     (98, 109),
     (15, 30),
     (119, 154),
     (16, 141),
     (35, 187),
     (18, 161),
     (19, 136),
     (38, 164),
     (58, 181),
     (24, 125),
     (23, 31),
     (136, 172),
     (63, 164),
     (101, 113),
     (86, 176),
     (161, 164),
     (153, 162),
     (111, 168),
     (3, 83),
     (116, 165),
     (28, 121),
     (122, 140),
     (49, 164),
     (33, 98),
     (87, 147),
     (109, 130),
     (95, 179),
     (152, 155),
     (30, 156),
     (124, 148),
     (56, 172),
     (128, 159),
     (62, 70),
     (119, 147),
     (27, 57),
     (103, 128),
     (52, 88),
     (54, 177),
     (19, 145),
     (77, 112),
     (6, 52),
     (82, 125),
     (159, 163),
     (106, 119),
     (37, 168),
     (38, 46),
     (4, 106),
     (43, 49),
     (8, 109),
     (120, 167),
     (163, 164),
     (33, 123),
     (37, 110),
     (145, 180),
     (165, 185),
     (21, 95),
     (170, 180),
     (25, 148),
     (27, 136),
     (101, 129),
     (121, 136),
     (58, 82),
     (30, 135),
     (88, 98),
     (53, 153),
     (56, 179),
     (4, 136),
     (5, 6),
     (62, 73),
     (100, 132),
     (15, 93),
     (54, 136),
     (43, 153),
     (6, 47),
     (63, 170),
     (102, 115),
     (85, 153),
     (34, 174),
     (35, 54),
     (95, 150),
     (120, 174),
     (51, 150),
     (87, 161),
     (73, 133),
     (21, 88),
     (95, 161),
     (7, 85),
     (121, 145),
     (104, 183),
     (16, 125),
     (36, 110),
     (37, 120),
     (40, 102),
     (47, 51),
     (87, 88),
     (18, 138),
     (24, 82),
     (43, 158),
     (6, 38),
     (45, 121),
     (85, 162),
     (13, 80),
     (38, 88),
     (8, 27),
     (157, 167),
     (45, 138),
     (51, 159),
     (145, 166),
     (57, 127),
     (76, 173),
     (95, 174),
     (61, 66),
     (27, 134),
     (121, 154),
     (123, 138),
     (124, 161),
     (65, 88),
     (10, 160),
     (36, 149),
     (67, 77),
     (47, 56),
     (178, 185),
     (52, 53),
     (35, 87),
     (54, 154),
     (40, 170),
     (114, 145),
     (59, 77),
     (43, 151),
     (82, 102),
     (45, 114),
     (28, 46),
     (141, 148),
     (82, 153),
     (35, 36),
     (110, 157),
     (40, 57),
     (39, 163),
     (82, 162),
     (65, 87),
     (169, 186),
     (87, 183),
     (57, 128),
     (145, 173),
     (44, 61),
     (104, 165),
     (12, 22),
     (67, 131),
     (52, 141),
     (15, 59),
     (77, 131),
     (24, 49),
     (102, 149),
     (103, 164),
     (86, 100),
     (96, 151),
     (19, 173),
     (114, 136),
     (79, 143),
     (28, 37),
     (85, 180),
     (137, 147),
     (3, 59),
     (35, 45),
     (110, 164),
     (147, 154),
     (39, 88),
     (97, 177),
     (7, 51),
     (16, 57),
     (36, 52),
     (149, 174),
     (151, 158),
     (8, 152),
     (104, 172),
     (123, 152),
     (88, 102),
     (52, 148),
     (71, 167),
     (36, 155),
     (69, 81),
     (137, 178),
     (139, 146),
     (108, 168),
     (19, 178),
     (24, 167),
     (23, 49),
     (82, 88),
     (46, 146),
     (138, 147),
     (14, 123),
     (70, 116),
     (143, 166),
     (7, 40),
     (122, 178),
     (53, 85),
     (36, 51),
     (92, 176),
     (57, 146),
     (21, 124),
     (79, 127),
     (7, 185),
     (121, 173),
     (104, 147),
     (123, 145),
     (47, 88),
     (24, 63),
     (150, 158),
     (137, 187),
     (87, 124),
     (16, 157),
     (19, 187),
     (40, 159),
     (17, 33),
     (24, 174),
     (174, 181),
     (46, 149),
     (138, 154),
     (71, 119),
     (40, 46),
     (113, 117),
     (28, 170),
     (53, 94),
     (36, 58),
     (98, 162),
     (154, 173),
     (119, 173),
     (46, 119),
     (104, 154),
     (51, 104),
     (71, 149),
     (36, 137),
     (38, 157),
     (28, 178),
     (158, 164),
     (5, 141),
     (135, 156),
     (125, 162),
     (15, 135),
     (83, 151),
     (37, 150),
     (21, 172),
     (24, 181),
     (79, 154),
     (33, 57),
     (88, 146),
     (143, 180),
     (109, 185),
     (147, 177),
     (39, 71),
     (5, 179),
     (51, 147),
     (28, 161),
     (104, 114),
     (163, 181),
     (128, 174),
     (33, 42),
     (16, 46),
     (53, 167),
     (2, 113),
     (131, 184),
     (26, 123),
     (27, 123),
     (119, 170),
     (174, 179),
     (106, 173),
     (15, 31),
     (71, 146),
     (38, 148),
     (5, 85),
     (6, 109),
     (82, 178),
     (63, 148),
     (137, 165),
     (139, 185),
     (87, 114),
     (127, 139),
     (55, 101),
     (111, 120),
     (114, 172),
     (45, 79),
     (46, 167),
     (138, 140),
     (140, 152),
     (88, 153),
     (14, 76),
     (53, 63),
     (109, 178),
     (166, 187),
     (25, 163),
     (47, 140),
     (16, 37),
     (36, 40),
     (148, 159),
     (4, 177),
     (8, 180),
     (156, 175),
     (104, 136),
     (71, 139),
     (5, 94),
     (135, 181),
     (66, 92),
     (158, 163),
     (65, 94),
     (125, 180),
     (39, 65),
     (62, 144),
     (46, 174),
     (84, 101),
     (32, 67),
     (51, 161),
     (14, 87),
     (53, 56),
     (146, 183),
     (21, 47),
     (25, 164),
     (47, 149),
     (105, 118),
     (33, 36),
     (16, 28),
     (36, 87),
     (57, 174),
     (5, 54),
     (8, 187),
     (104, 143),
     (51, 127),
     (52, 119),
     (71, 128),
     (36, 166),
     (5, 71),
     (120, 153),
     (136, 138),
     (155, 173),
     (102, 163),
     (139, 183),
     (105, 144),
     (127, 185),
     (164, 181),
     (40, 123),
     (23, 82),
     (26, 178),
     (26, 185),
     (85, 90),
     (21, 40),
     (26, 28),
     (152, 185),
     (26, 37),
     (63, 120),
     (47, 146),
     (49, 77),
     (53, 178),
     (56, 138),
     (131, 175),
     (5, 63),
     (53, 128),
     (7, 154),
     (119, 177),
     (123, 178),
     (179, 187),
     (109, 123),
     (56, 121),
     (37, 57),
     (58, 158),
     (58, 88),
     (136, 177),
     (135, 171),
     (10, 29),
     (27, 125),
     (139, 172),
     (127, 166),
     (37, 138),
     (40, 98),
     (39, 53),
     (71, 177),
     (65, 110),
     (138, 185),
     (1, 60),
     (58, 71),
     (166, 172),
     (115, 138),
     (43, 108),
     (33, 153),
     (47, 155),
     (53, 187),
     (9, 61),
     (148, 180),
     (5, 56),
     (153, 167),
     (7, 147),
     (20, 156),
     (103, 159),
     (16, 153),
     (109, 116),
     (54, 170),
     (19, 116),
     (58, 153),
     (93, 151),
     (82, 150),
     (155, 187),
     (139, 165),
     (105, 130),
     (31, 83),
     (14, 185),
     (23, 161),
     (37, 179),
     (97, 136),
     (23, 96),
     (8, 114),
     (62, 133),
     (45, 179),
     (122, 123),
     (16, 161),
     (51, 180),
     (143, 145),
     (18, 87),
     (21, 58),
     (4, 6),
     (7, 123),
     (63, 110),
     (30, 168),
     (125, 158),
     (37, 90),
     (2, 44),
     (148, 179),
     (97, 106),
     (6, 177),
     (7, 136),
     (103, 148),
     (106, 136),
     (51, 82),
     (35, 140),
     (18, 172),
     (54, 173),
     (130, 136),
     (25, 102),
     (47, 159),
     (158, 159),
     (34, 120),
     (18, 63),
     (38, 58),
     (108, 151),
     (24, 159),
     (8, 121),
     (45, 172),
     (48, 144),
     (140, 187),
     (159, 164),
     (109, 143),
     (146, 155),
     (76, 147),
     (20, 59),
     (46, 53),
     (21, 179),
     (53, 141),
     (46, 128),
     (148, 186),
     (167, 181),
     (27, 85),
     (151, 184),
     (103, 141),
     (18, 167),
     (25, 111),
     (136, 166),
     (135, 150),
     (30, 77),
     (36, 102),
     (14, 139),
     (180, 183),
     (18, 54),
     (40, 87),
     (97, 154),
     (140, 178),
     (87, 149),
     (145, 185),
     (109, 136),
     (57, 98),
     (96, 131),
     (95, 181),
     (43, 83),
     (26, 57),
     (28, 146),
     (120, 151),
     (52, 163),
     (53, 150),
     (56, 166),
     (94, 119),
     (4, 155),
     (98, 106),
     (27, 42),
     (119, 149),
     (40, 63),
     (18, 158),
     (19, 139),
     (130, 154),
     (93, 150),
     (79, 173),
     (136, 173),
     (63, 167),
     (85, 150),
     (161, 187),
     (166, 185),
     (37, 174),
     (38, 52),
     (116, 166),
     (26, 145),
     (48, 142),
     (87, 146),
     (145, 178),
     (21, 85),
     (27, 178),
     (0, 68),
     (46, 71),
     (58, 85),
     (177, 180),
     (51, 56),
     (52, 170),
     (73, 107),
     (36, 121),
     (19, 35),
     (93, 120),
     (22, 60),
     (5, 28),
     (6, 154),
     (119, 146),
     (18, 153),
     (77, 111),
     (43, 163),
     (79, 170),
     (63, 172),
     (83, 175),
     (120, 150),
     (85, 159),
     (106, 116),
     (17, 154),
     (18, 40),
     (6, 46),
     (38, 47),
     (120, 168),
     (48, 133),
     (21, 162),
     (90, 125),
     (53, 119),
     (110, 120),
     (2, 129),
     (21, 94),
     (8, 145),
     (121, 143),
     (104, 177),
     (124, 172),
     (56, 180),
     (77, 151),
     (4, 137),
     (9, 66),
     (47, 53),
     (31, 175),
     (0, 70),
     (54, 137),
     (45, 127),
     (106, 127),
     (161, 181),
     (18, 35),
     (182, 184),
     (93, 168),
     (39, 172),
     (23, 157),
     (104, 138),
     (33, 115),
     (145, 172),
     (153, 181),
     (76, 183),
     (21, 103),
     (69, 80),
     (17, 106),
     (71, 187),
     (56, 187),
     (37, 103),
     (5, 14),
     (6, 148),
     (14, 36),
     (36, 185),
     (40, 164),
     (23, 37),
     (20, 83),
     (65, 172),
     (85, 161),
     (50, 69),
     (18, 26),
     (40, 51),
     (15, 77),
     (97, 166),
     (45, 137),
     (28, 71),
     (122, 166),
     (18, 110),
     (51, 158),
     (145, 165),
     (54, 121),
     (165, 170),
     (114, 121),
     (22, 86),
     (27, 153),
     (46, 88),
     (69, 89),
     (31, 99),
     (36, 150),
     (19, 54),
     (24, 43),
     (5, 119),
     (6, 143),
     (119, 121),
     (103, 174),
     (131, 163),
     (54, 155),
     (20, 31),
     (28, 128),
     (23, 34),
     (82, 103),
     (28, 47),
     (85, 170),
     (13, 72),
     (18, 21),
     (110, 162),
     (93, 186),
     (40, 58),
     (39, 162),
     (28, 94),
     (1, 100),
     (76, 165),
     (39, 51),
     (149, 164),
     (79, 104),
     (8, 146),
     (104, 166),
     (16, 82),
     (153, 159),
     (9, 117),
     (102, 138),
     (103, 167),
     (125, 150),
     (15, 171),
     (54, 146),
     (19, 172),
     (40, 146),
     (114, 137),
     (24, 161),
     (25, 85),
     (4, 14),
     (82, 94),
     (28, 38),
     (85, 179),
     (31, 43),
     (103, 125),
     (17, 134),
     (128, 186),
     (4, 79),
     (26, 90),
     (23, 168),
     (31, 59),
     (28, 85),
     (27, 88),
     (16, 58),
     (119, 139),
     (36, 53),
     (94, 178),
     (39, 40),
     (95, 159),
     (104, 173),
     (123, 155),
     (106, 177),
     (120, 158),
     (52, 149),
     (71, 166),
     (88, 90),
     (24, 57),
     (5, 121),
     (6, 121),
     (137, 177),
     (31, 131),
     (34, 110),
     (40, 153),
     (21, 153),
     (24, 168),
     (25, 94),
     (6, 8),
     (120, 164),
     (71, 121),
     (37, 47),
     (4, 54),
     (116, 136),
     (99, 112),
     (63, 94),
     (28, 172),
     (32, 151),
     (16, 49),
     (94, 181),
     (21, 123),
     (57, 102),
     (121, 172),
     (88, 110),
     (51, 98),
     (71, 159),
     (56, 87),
     (38, 155),
     (150, 159),
     (100, 160),
     (135, 157),
     (87, 127),
     (40, 128),
     (114, 187),
     (25, 39),
     (33, 58),
     (28, 52),
     (138, 155),
     (49, 153),
     (72, 75),
     (40, 47),
     (103, 181),
     (8, 56),
     (63, 71),
     (65, 174),
     (16, 40),
     (57, 154),
     (95, 141),
     (151, 175),
     (7, 177),
     (119, 172),
     (104, 155),
     (12, 60),
     (71, 148),
     (36, 138),
     (13, 81),
     (125, 161),
     (35, 114),
     (37, 149),
     (114, 178),
     (25, 40),
     (45, 85),
     (28, 51)])

In [266]:
neighbors_joint = neighbors_s.intersection(neighbors_t)

In [267]:
neighbors_joint


Out[267]:
set([(41, 42),
     (137, 138),
     (122, 123),
     (116, 118),
     (51, 52),
     (102, 103),
     (162, 163),
     (25, 26),
     (158, 159),
     (46, 47),
     (30, 31),
     (139, 140),
     (35, 36)])

In [268]:
#matches knox doc test 13 joint pairs

Experiment with artificial data


In [269]:
import numpy as np
n = 100

In [270]:
space = np.random.random((n,2)) # points in the unit square

In [271]:
kd_s = ps.cg.KDTree(space)

In [272]:
neigh_s = kd_s.query_pairs(0.10) # pairs within 0.10 of each other

In [273]:
len(neigh_s)


Out[273]:
130

In [274]:
times = np.random.random((n,1)) # time from 0 to 1

In [275]:
kd_t = ps.cg.KDTree(times)

In [276]:
neigh_t = kd_t.query_pairs(0.01) # pairs within .01 units of time of each other

In [277]:
len(neigh_t)


Out[277]:
94

In [278]:
joint = neigh_s.intersection(neigh_t) # neighbors in both space and time

In [279]:
npairs = len(joint) # number of pairs

In [280]:
# use the number and ids of time neighbors
time_ids = np.array([ pair for pair in neigh_t])

In [281]:
ids = np.arange(n)
permutations = 99
larger = 0
for permutation in xrange(permutations):
    np.random.shuffle(ids)
    random_time = np.zeros((len(time_ids),2),int)
    random_time[:,0] = ids[time_ids[:,0]]
    random_time[:,1] = ids[time_ids[:,1]]
    random_time.sort(axis=1)
    random_time = set([tuple(row) for row in random_time])
    random_joint = random_time.intersection(neigh_s)
    if len(random_joint) >= npairs:
        larger += 1

In [282]:
print "Number as large as observed: ",larger
if (permutations - larger) < larger:
    larger = permutations - larger

p_sim = (larger + 1.) / (permutations + 1.)
print "p-value: ", p_sim


Number as large as observed:  52
p-value:  0.48

With Burkitt data


In [283]:
events = interaction.SpaceTimeEvents(ps.examples.get_path("burkitt"), 'T')

In [284]:
kd_t = ps.cg.KDTree(events.time)

In [285]:
neigh_t = kd_t.query_pairs(5) # five units for time threshold

In [286]:
kd_s = ps.cg.KDTree(events.space)

In [287]:
neigh_s = kd_s.query_pairs(20) # 20 unit threshold for space

In [288]:
joint = neigh_s.intersection(neigh_t)
npairs = len(joint)

In [289]:
npairs


Out[289]:
13

In [290]:
np.random.seed(12345)

In [291]:
# use the number and ids of time neighbors
time_ids = np.array([ pair for pair in neigh_t])

In [292]:
ids = np.arange(len(events.time))
permutations = 99
larger = 0
joints = np.zeros((permutations,1), int)
for permutation in xrange(permutations):
    np.random.shuffle(ids)
    random_time = np.zeros((len(time_ids),2),int)
    random_time[:,0] = ids[time_ids[:,0]]
    random_time[:,1] = ids[time_ids[:,1]]
    random_time.sort(axis=1)
    random_time = set([tuple(row) for row in random_time])
    random_joint = random_time.intersection(neigh_s)
    nrj = len(random_joint)
    joints[permutation] = nrj
    if nrj >= npairs:
        larger += 1

In [293]:
print "Number as large as observed: ",larger
if (permutations - larger) < larger:
    larger = permutations - larger

p_sim = (larger + 1.) / (permutations + 1.)
print "p-value: ", p_sim


Number as large as observed:  19
p-value:  0.2

In [293]:


In [294]:
joints.mean()


Out[294]:
10.04040404040404

In [295]:
joints.min()


Out[295]:
2

In [296]:
joints.max()


Out[296]:
17

In [297]:
joints.var()


Out[297]:
8.9074584226099311

In [ ]: