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
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
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 [ ]:
Content source: hasecbinusr/pysal
Similar notebooks: