Tutorial¶
This tutorial will take you through all the basic steps of using PhaseMap. Since PhaseMap is a Python library, you might need some knowledge of Python along the way. If you’ve never used Python before, you might want to check out the excellent Python Tutorial first.
Basic usage¶
To get started, we will see how to compute a simple phase diagram. Consider the following phase, which describes a circle:
In [1]: def phase(pos):
...: x, y = pos
...: return int(x**2 + y**2 < 1)
...:
To calculate the phase diagram, we use the phasemap.run()
function. The limits
parameter specifies the area in which the phase diagram should be calculated. The mesh
specifies the initial grid. It can be given either as a list of integers, specifying the number of grid lines in each dimension, or just as a single integer, in which case all dimensions have the same number of lines.
The run()
function returns a result, which contains three attributes:
points
is a dictionary mapping coordinates (relative to thelimits
) to their phaseboxes
is a set ofBox
instanceslimits
describes the area where the phase diagram was calculated, as
In [2]: import phasemap as pm
In [3]: res = pm.run(
...: phase,
...: limits=[(-1, 1), (-1, 1)],
...: mesh=3,
...: )
...:
In [4]: print('Points:', res.points)
...: print('Boxes:', res.boxes)
...: print('Limits:', res.limits)
...:
Points: {Coordinate([Fraction(3, 4), Fraction(3, 4)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(1, 2)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(1, 4)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(0, 1), Fraction(1, 2)], dtype=object): 0, Coordinate([Fraction(1, 2), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(3, 4), Fraction(1, 4)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(3, 4)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(5, 8), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(3, 4)], dtype=object): 1, Coordinate([Fraction(3, 4), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(5, 8)], dtype=object): 1, Coordinate([Fraction(3, 4), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(3, 4)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(0, 1), Fraction(1, 4)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(3, 8)], dtype=object): 1, Coordinate([Fraction(1, 4), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(3, 8), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(1, 4)], dtype=object): 1, Coordinate([Fraction(5, 8), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(3, 4), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(1, 4)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(3, 8)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(5, 8)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(3, 4)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(3, 8), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(9, 16), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(5, 8), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(11, 16), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(3, 4), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(9, 16)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(5, 8)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(11, 16)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(3, 4)], dtype=object): 1, Coordinate([Fraction(13, 16), Fraction(13, 16)], dtype=object): 1, Coordinate([Fraction(3, 16), Fraction(3, 16)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(1, 4)], dtype=object): 1, Coordinate([Fraction(1, 4), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(5, 16)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(3, 8)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(7, 16)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(5, 16), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(3, 8), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(7, 16), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(9, 16), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(5, 8), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(11, 16), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(3, 4), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(13, 16), Fraction(3, 16)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(1, 4)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(5, 16)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(3, 8)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(7, 16)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(9, 16)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(5, 8)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(11, 16)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(3, 4)], dtype=object): 1, Coordinate([Fraction(3, 16), Fraction(13, 16)], dtype=object): 1, Coordinate([Fraction(1, 4), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(5, 16), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(3, 8), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(7, 16), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(17, 32), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(9, 16), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(19, 32), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(5, 8), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(21, 32), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(11, 16), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(23, 32), Fraction(31, 32)], dtype=object): 0, Coordinate([Fraction(3, 4), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(13, 16), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(17, 32)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(9, 16)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(19, 32)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(5, 8)], dtype=object): 1, Coordinate([Fraction(31, 32), Fraction(21, 32)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(11, 16)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(23, 32)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(3, 4)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(13, 16)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(27, 32), Fraction(27, 32)], dtype=object): 1, Coordinate([Fraction(13, 16), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(13, 16)], dtype=object): 1, Coordinate([Fraction(5, 32), Fraction(5, 32)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(3, 16)], dtype=object): 1, Coordinate([Fraction(3, 16), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(3, 16)], dtype=object): 0, Coordinate([Fraction(0, 1), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(3, 16), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(9, 32)], dtype=object): 0, Coordinate([Fraction(0, 1), Fraction(5, 16)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(1, 4)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(11, 32)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(3, 8)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(13, 32)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(7, 16)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(15, 32)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(9, 32), Fraction(1, 32)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(5, 16), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(11, 32), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(3, 8), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(13, 32), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(7, 16), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(15, 32), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(17, 32), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(9, 16), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(19, 32), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(5, 8), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(21, 32), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(11, 16), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(23, 32), Fraction(1, 32)], dtype=object): 0, Coordinate([Fraction(3, 4), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(13, 16), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(27, 32), Fraction(5, 32)], dtype=object): 1, Coordinate([Fraction(13, 16), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(3, 16)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(3, 16)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(9, 32)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(1, 4)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(5, 16)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(11, 32)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(3, 8)], dtype=object): 1, Coordinate([Fraction(31, 32), Fraction(13, 32)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(7, 16)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(15, 32)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(17, 32)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(9, 16)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(19, 32)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(5, 8)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(21, 32)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(11, 16)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(23, 32)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(3, 4)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(13, 16)], dtype=object): 0, Coordinate([Fraction(0, 1), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(5, 32), Fraction(27, 32)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(13, 16)], dtype=object): 1, Coordinate([Fraction(3, 16), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(3, 16), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(9, 32), Fraction(31, 32)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(5, 16), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(11, 32), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(3, 8), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(13, 32), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(7, 16), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(15, 32), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(33, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(17, 32), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(35, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(9, 16), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(37, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(19, 32), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(39, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(5, 8), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(41, 64), Fraction(63, 64)], dtype=object): 0, Coordinate([Fraction(21, 32), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(43, 64), Fraction(63, 64)], dtype=object): 0, Coordinate([Fraction(11, 16), Fraction(31, 32)], dtype=object): 0, Coordinate([Fraction(45, 64), Fraction(61, 64)], dtype=object): 1, Coordinate([Fraction(23, 32), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(23, 32), Fraction(29, 32)], dtype=object): 1, Coordinate([Fraction(11, 16), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(25, 32), Fraction(29, 32)], dtype=object): 1, Coordinate([Fraction(63, 64), Fraction(33, 64)], dtype=object): 1, Coordinate([Fraction(31, 32), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(17, 32)], dtype=object): 0, Coordinate([Fraction(63, 64), Fraction(35, 64)], dtype=object): 1, Coordinate([Fraction(31, 32), Fraction(9, 16)], dtype=object): 1, Coordinate([Fraction(63, 64), Fraction(37, 64)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(19, 32)], dtype=object): 0, Coordinate([Fraction(63, 64), Fraction(39, 64)], dtype=object): 1, Coordinate([Fraction(31, 32), Fraction(5, 8)], dtype=object): 1, Coordinate([Fraction(63, 64), Fraction(41, 64)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(21, 32)], dtype=object): 0, Coordinate([Fraction(63, 64), Fraction(43, 64)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(11, 16)], dtype=object): 0, Coordinate([Fraction(61, 64), Fraction(45, 64)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(23, 32)], dtype=object): 1, Coordinate([Fraction(29, 32), Fraction(23, 32)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(11, 16)], dtype=object): 1, Coordinate([Fraction(29, 32), Fraction(25, 32)], dtype=object): 1, Coordinate([Fraction(55, 64), Fraction(55, 64)], dtype=object): 0, Coordinate([Fraction(27, 32), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(27, 32)], dtype=object): 0, Coordinate([Fraction(27, 32), Fraction(29, 32)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(29, 32), Fraction(27, 32)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(9, 64), Fraction(9, 64)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(5, 32)], dtype=object): 0, Coordinate([Fraction(5, 32), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(3, 32), Fraction(5, 32)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(3, 32), Fraction(7, 32)], dtype=object): 1, Coordinate([Fraction(5, 32), Fraction(3, 32)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(7, 32), Fraction(3, 32)], dtype=object): 1, Coordinate([Fraction(3, 64), Fraction(19, 64)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(5, 16)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(9, 32)], dtype=object): 1, Coordinate([Fraction(3, 32), Fraction(9, 32)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(5, 16)], dtype=object): 1, Coordinate([Fraction(1, 64), Fraction(21, 64)], dtype=object): 0, Coordinate([Fraction(0, 1), Fraction(11, 32)], dtype=object): 0, Coordinate([Fraction(1, 64), Fraction(23, 64)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(3, 8)], dtype=object): 1, Coordinate([Fraction(1, 64), Fraction(25, 64)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(13, 32)], dtype=object): 0, Coordinate([Fraction(1, 64), Fraction(27, 64)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(7, 16)], dtype=object): 1, Coordinate([Fraction(1, 64), Fraction(29, 64)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(15, 32)], dtype=object): 0, Coordinate([Fraction(1, 64), Fraction(31, 64)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(1, 2)], dtype=object): 1, Coordinate([Fraction(19, 64), Fraction(3, 64)], dtype=object): 1, Coordinate([Fraction(9, 32), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(5, 16), Fraction(1, 32)], dtype=object): 0, Coordinate([Fraction(9, 32), Fraction(3, 32)], dtype=object): 1, Coordinate([Fraction(5, 16), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(21, 64), Fraction(1, 64)], dtype=object): 0, Coordinate([Fraction(11, 32), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(23, 64), Fraction(1, 64)], dtype=object): 0, Coordinate([Fraction(3, 8), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(25, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(13, 32), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(27, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(7, 16), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(29, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(15, 32), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(31, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(1, 2), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(33, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(17, 32), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(35, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(9, 16), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(37, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(19, 32), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(39, 64), Fraction(1, 64)], dtype=object): 1, Coordinate([Fraction(5, 8), Fraction(1, 32)], dtype=object): 1, Coordinate([Fraction(41, 64), Fraction(1, 64)], dtype=object): 0, Coordinate([Fraction(21, 32), Fraction(0, 1)], dtype=object): 0, Coordinate([Fraction(43, 64), Fraction(1, 64)], dtype=object): 0, Coordinate([Fraction(11, 16), Fraction(1, 32)], dtype=object): 0, Coordinate([Fraction(45, 64), Fraction(3, 64)], dtype=object): 1, Coordinate([Fraction(23, 32), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(23, 32), Fraction(3, 32)], dtype=object): 1, Coordinate([Fraction(11, 16), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(25, 32), Fraction(3, 32)], dtype=object): 1, Coordinate([Fraction(55, 64), Fraction(9, 64)], dtype=object): 0, Coordinate([Fraction(27, 32), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(5, 32)], dtype=object): 0, Coordinate([Fraction(27, 32), Fraction(3, 32)], dtype=object): 0, Coordinate([Fraction(7, 8), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(29, 32), Fraction(5, 32)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(1, 8)], dtype=object): 0, Coordinate([Fraction(29, 32), Fraction(7, 32)], dtype=object): 1, Coordinate([Fraction(61, 64), Fraction(19, 64)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(9, 32)], dtype=object): 1, Coordinate([Fraction(31, 32), Fraction(5, 16)], dtype=object): 0, Coordinate([Fraction(29, 32), Fraction(9, 32)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(5, 16)], dtype=object): 1, Coordinate([Fraction(63, 64), Fraction(21, 64)], dtype=object): 0, Coordinate([Fraction(1, 1), Fraction(11, 32)], dtype=object): 0, Coordinate([Fraction(63, 64), Fraction(23, 64)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(3, 8)], dtype=object): 1, Coordinate([Fraction(63, 64), Fraction(25, 64)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(13, 32)], dtype=object): 0, Coordinate([Fraction(63, 64), Fraction(27, 64)], dtype=object): 1, Coordinate([Fraction(31, 32), Fraction(7, 16)], dtype=object): 1, Coordinate([Fraction(63, 64), Fraction(29, 64)], dtype=object): 1, Coordinate([Fraction(1, 1), Fraction(15, 32)], dtype=object): 0, Coordinate([Fraction(63, 64), Fraction(31, 64)], dtype=object): 1, Coordinate([Fraction(1, 64), Fraction(33, 64)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(17, 32)], dtype=object): 0, Coordinate([Fraction(1, 64), Fraction(35, 64)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(9, 16)], dtype=object): 1, Coordinate([Fraction(1, 64), Fraction(37, 64)], dtype=object): 1, Coordinate([Fraction(0, 1), Fraction(19, 32)], dtype=object): 0, Coordinate([Fraction(1, 64), Fraction(39, 64)], dtype=object): 1, Coordinate([Fraction(1, 32), Fraction(5, 8)], dtype=object): 1, Coordinate([Fraction(1, 64), Fraction(41, 64)], dtype=object): 0, Coordinate([Fraction(0, 1), Fraction(21, 32)], dtype=object): 0, Coordinate([Fraction(1, 64), Fraction(43, 64)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(11, 16)], dtype=object): 0, Coordinate([Fraction(3, 64), Fraction(45, 64)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(23, 32)], dtype=object): 1, Coordinate([Fraction(3, 32), Fraction(23, 32)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(11, 16)], dtype=object): 1, Coordinate([Fraction(3, 32), Fraction(25, 32)], dtype=object): 1, Coordinate([Fraction(9, 64), Fraction(55, 64)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(27, 32)], dtype=object): 0, Coordinate([Fraction(5, 32), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(3, 32), Fraction(27, 32)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(7, 8)], dtype=object): 0, Coordinate([Fraction(5, 32), Fraction(29, 32)], dtype=object): 0, Coordinate([Fraction(1, 8), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(7, 32), Fraction(29, 32)], dtype=object): 1, Coordinate([Fraction(19, 64), Fraction(61, 64)], dtype=object): 1, Coordinate([Fraction(9, 32), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(5, 16), Fraction(31, 32)], dtype=object): 0, Coordinate([Fraction(9, 32), Fraction(29, 32)], dtype=object): 1, Coordinate([Fraction(5, 16), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(21, 64), Fraction(63, 64)], dtype=object): 0, Coordinate([Fraction(11, 32), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(23, 64), Fraction(63, 64)], dtype=object): 0, Coordinate([Fraction(3, 8), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(25, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(13, 32), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(27, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(7, 16), Fraction(31, 32)], dtype=object): 1, Coordinate([Fraction(29, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(15, 32), Fraction(1, 1)], dtype=object): 0, Coordinate([Fraction(31, 64), Fraction(63, 64)], dtype=object): 1, Coordinate([Fraction(43, 64), Fraction(61, 64)], dtype=object): 1, Coordinate([Fraction(21, 32), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(47, 64), Fraction(61, 64)], dtype=object): 0, Coordinate([Fraction(3, 4), Fraction(31, 32)], dtype=object): 0, Coordinate([Fraction(47, 64), Fraction(59, 64)], dtype=object): 1, Coordinate([Fraction(3, 4), Fraction(29, 32)], dtype=object): 1, Coordinate([Fraction(49, 64), Fraction(59, 64)], dtype=object): 1, Coordinate([Fraction(25, 32), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(51, 64), Fraction(59, 64)], dtype=object): 0, Coordinate([Fraction(13, 16), Fraction(29, 32)], dtype=object): 0, Coordinate([Fraction(61, 64), Fraction(43, 64)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(21, 32)], dtype=object): 1, Coordinate([Fraction(61, 64), Fraction(47, 64)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(3, 4)], dtype=object): 0, Coordinate([Fraction(59, 64), Fraction(47, 64)], dtype=object): 1, Coordinate([Fraction(29, 32), Fraction(3, 4)], dtype=object): 1, Coordinate([Fraction(59, 64), Fraction(49, 64)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(25, 32)], dtype=object): 0, Coordinate([Fraction(59, 64), Fraction(51, 64)], dtype=object): 0, Coordinate([Fraction(29, 32), Fraction(13, 16)], dtype=object): 0, Coordinate([Fraction(53, 64), Fraction(55, 64)], dtype=object): 1, Coordinate([Fraction(13, 16), Fraction(27, 32)], dtype=object): 1, Coordinate([Fraction(55, 64), Fraction(53, 64)], dtype=object): 1, Coordinate([Fraction(27, 32), Fraction(13, 16)], dtype=object): 1, Coordinate([Fraction(53, 64), Fraction(57, 64)], dtype=object): 0, Coordinate([Fraction(57, 64), Fraction(53, 64)], dtype=object): 0, Coordinate([Fraction(9, 64), Fraction(11, 64)], dtype=object): 1, Coordinate([Fraction(5, 32), Fraction(3, 16)], dtype=object): 1, Coordinate([Fraction(11, 64), Fraction(9, 64)], dtype=object): 1, Coordinate([Fraction(3, 16), Fraction(5, 32)], dtype=object): 1, Coordinate([Fraction(7, 64), Fraction(11, 64)], dtype=object): 0, Coordinate([Fraction(3, 32), Fraction(3, 16)], dtype=object): 0, Coordinate([Fraction(5, 64), Fraction(13, 64)], dtype=object): 0, Coordinate([Fraction(1, 16), Fraction(7, 32)], dtype=object): 0, Coordinate([Fraction(5, 64), Fraction(15, 64)], dtype=object): 1, Coordinate([Fraction(3, 32), Fraction(1, 4)], dtype=object): 1, Coordinate([Fraction(11, 64), Fraction(7, 64)], dtype=object): 0, Coordinate([Fraction(3, 16), Fraction(3, 32)], dtype=object): 0, Coordinate([Fraction(13, 64), Fraction(5, 64)], dtype=object): 0, Coordinate([Fraction(7, 32), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(15, 64), Fraction(5, 64)], dtype=object): 1, Coordinate([Fraction(1, 4), Fraction(3, 32)], dtype=object): 1, Coordinate([Fraction(3, 64), Fraction(17, 64)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(1, 4)], dtype=object): 0, Coordinate([Fraction(3, 64), Fraction(21, 64)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(11, 32)], dtype=object): 1, Coordinate([Fraction(5, 64), Fraction(17, 64)], dtype=object): 1, Coordinate([Fraction(17, 64), Fraction(3, 64)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(1, 32)], dtype=object): 0, Coordinate([Fraction(21, 64), Fraction(3, 64)], dtype=object): 1, Coordinate([Fraction(11, 32), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(17, 64), Fraction(5, 64)], dtype=object): 1, Coordinate([Fraction(43, 64), Fraction(3, 64)], dtype=object): 1, Coordinate([Fraction(21, 32), Fraction(1, 16)], dtype=object): 1, Coordinate([Fraction(47, 64), Fraction(3, 64)], dtype=object): 0, Coordinate([Fraction(3, 4), Fraction(1, 32)], dtype=object): 0, Coordinate([Fraction(47, 64), Fraction(5, 64)], dtype=object): 1, Coordinate([Fraction(3, 4), Fraction(3, 32)], dtype=object): 1, Coordinate([Fraction(49, 64), Fraction(5, 64)], dtype=object): 1, Coordinate([Fraction(25, 32), Fraction(1, 16)], dtype=object): 0, Coordinate([Fraction(51, 64), Fraction(5, 64)], dtype=object): 0, Coordinate([Fraction(13, 16), Fraction(3, 32)], dtype=object): 0, Coordinate([Fraction(53, 64), Fraction(9, 64)], dtype=object): 1, Coordinate([Fraction(13, 16), Fraction(5, 32)], dtype=object): 1, Coordinate([Fraction(55, 64), Fraction(11, 64)], dtype=object): 1, Coordinate([Fraction(27, 32), Fraction(3, 16)], dtype=object): 1, Coordinate([Fraction(53, 64), Fraction(7, 64)], dtype=object): 0, Coordinate([Fraction(57, 64), Fraction(11, 64)], dtype=object): 0, Coordinate([Fraction(29, 32), Fraction(3, 16)], dtype=object): 0, Coordinate([Fraction(59, 64), Fraction(13, 64)], dtype=object): 0, Coordinate([Fraction(15, 16), Fraction(7, 32)], dtype=object): 0, Coordinate([Fraction(59, 64), Fraction(15, 64)], dtype=object): 1, Coordinate([Fraction(29, 32), Fraction(1, 4)], dtype=object): 1, Coordinate([Fraction(61, 64), Fraction(17, 64)], dtype=object): 0, Coordinate([Fraction(31, 32), Fraction(1, 4)], dtype=object): 0, Coordinate([Fraction(61, 64), Fraction(21, 64)], dtype=object): 1, Coordinate([Fraction(15, 16), Fraction(11, 32)], dtype=object): 1, Coordinate([Fraction(59, 64), Fraction(17, 64)], dtype=object): 1, Coordinate([Fraction(3, 64), Fraction(43, 64)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(21, 32)], dtype=object): 1, Coordinate([Fraction(3, 64), Fraction(47, 64)], dtype=object): 0, Coordinate([Fraction(1, 32), Fraction(3, 4)], dtype=object): 0, Coordinate([Fraction(5, 64), Fraction(47, 64)], dtype=object): 1, Coordinate([Fraction(3, 32), Fraction(3, 4)], dtype=object): 1, Coordinate([Fraction(5, 64), Fraction(49, 64)], dtype=object): 1, Coordinate([Fraction(1, 16), Fraction(25, 32)], dtype=object): 0, Coordinate([Fraction(5, 64), Fraction(51, 64)], dtype=object): 0, Coordinate([Fraction(3, 32), Fraction(13, 16)], dtype=object): 0, Coordinate([Fraction(9, 64), Fraction(53, 64)], dtype=object): 1, Coordinate([Fraction(5, 32), Fraction(13, 16)], dtype=object): 1, Coordinate([Fraction(11, 64), Fraction(55, 64)], dtype=object): 1, Coordinate([Fraction(3, 16), Fraction(27, 32)], dtype=object): 1, Coordinate([Fraction(7, 64), Fraction(53, 64)], dtype=object): 0, Coordinate([Fraction(11, 64), Fraction(57, 64)], dtype=object): 0, Coordinate([Fraction(3, 16), Fraction(29, 32)], dtype=object): 0, Coordinate([Fraction(13, 64), Fraction(59, 64)], dtype=object): 0, Coordinate([Fraction(7, 32), Fraction(15, 16)], dtype=object): 0, Coordinate([Fraction(15, 64), Fraction(59, 64)], dtype=object): 1, Coordinate([Fraction(1, 4), Fraction(29, 32)], dtype=object): 1, Coordinate([Fraction(17, 64), Fraction(61, 64)], dtype=object): 0, Coordinate([Fraction(1, 4), Fraction(31, 32)], dtype=object): 0, Coordinate([Fraction(21, 64), Fraction(61, 64)], dtype=object): 1, Coordinate([Fraction(11, 32), Fraction(15, 16)], dtype=object): 1, Coordinate([Fraction(17, 64), Fraction(59, 64)], dtype=object): 1, Coordinate([Fraction(51, 64), Fraction(57, 64)], dtype=object): 1, Coordinate([Fraction(25, 32), Fraction(7, 8)], dtype=object): 1, Coordinate([Fraction(57, 64), Fraction(51, 64)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(25, 32)], dtype=object): 1, Coordinate([Fraction(7, 64), Fraction(13, 64)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(7, 32)], dtype=object): 1, Coordinate([Fraction(13, 64), Fraction(7, 64)], dtype=object): 1, Coordinate([Fraction(7, 32), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(51, 64), Fraction(7, 64)], dtype=object): 1, Coordinate([Fraction(25, 32), Fraction(1, 8)], dtype=object): 1, Coordinate([Fraction(57, 64), Fraction(13, 64)], dtype=object): 1, Coordinate([Fraction(7, 8), Fraction(7, 32)], dtype=object): 1, Coordinate([Fraction(7, 64), Fraction(51, 64)], dtype=object): 1, Coordinate([Fraction(1, 8), Fraction(25, 32)], dtype=object): 1, Coordinate([Fraction(13, 64), Fraction(57, 64)], dtype=object): 1, Coordinate([Fraction(7, 32), Fraction(7, 8)], dtype=object): 1}
Boxes: {Box(corner=[Fraction(19, 64) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(41, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(23, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(29, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 32) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(11, 32) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(21, 64) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 32) Fraction(1, 4)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(5, 16) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(43, 64) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(21, 32) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 16) Fraction(3, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 64) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(49, 64) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(37, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(33, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(19, 32) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(45, 64) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 4) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(29, 32) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(29, 32) Fraction(3, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 4) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(11, 16) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(5, 8) Fraction(1, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(3, 4) Fraction(0, 1)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(3, 4) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 8) Fraction(3, 4)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(1, 2) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(31, 32) Fraction(27, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 64) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 32) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(57, 64) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(29, 32) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(33, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(1, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(1, 32) Fraction(13, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 2) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(13, 64) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 32) Fraction(7, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 8) Fraction(1, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(7, 8) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(31, 32) Fraction(3, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(27, 32) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 16) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 64) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(51, 64) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 64) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 32) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 16) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(13, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(47, 64) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(23, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(15, 64) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(5, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(3, 4) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(23, 32) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(17, 64) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(9, 16) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(55, 64) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(31, 32) Fraction(23, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 64) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(25, 32) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 32) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 8) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 4) Fraction(3, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(1, 4) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(9, 32) Fraction(31, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(31, 32) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(37, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(55, 64) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 8) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(27, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 64) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(25, 32) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 4) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 32) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(9, 16) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(41, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(55, 64) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(9, 64) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 8) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(25, 32) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 32) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 4) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(15, 16) Fraction(15, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(63, 64) Fraction(41, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 64) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(27, 32) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 32) Fraction(9, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(23, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 16) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(43, 64) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 4) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 32) Fraction(29, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 16) Fraction(9, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(0, 1) Fraction(3, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(53, 64) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 16) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 8) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(23, 32) Fraction(0, 1)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(63, 64) Fraction(9, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(5, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 16) Fraction(9, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(3, 8) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 4) Fraction(3, 4)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(1, 4) Fraction(1, 2)], size=[Fraction(1, 4) Fraction(1, 4)], phase=1), Box(corner=[Fraction(1, 2) Fraction(7, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(5, 8) Fraction(7, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(5, 8) Fraction(3, 4)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(3, 16) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 8) Fraction(1, 4)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(1, 4) Fraction(1, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(0, 1) Fraction(3, 4)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(3, 8) Fraction(7, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(3, 8) Fraction(3, 4)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(5, 8) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 16) Fraction(1, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(19, 64) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(41, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(23, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(57, 64) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 2) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(17, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(37, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 64) Fraction(7, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(31, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(15, 16) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(29, 32) Fraction(49, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(57, 64) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 64) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 16) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 2) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 16) Fraction(5, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(17, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(31, 32) Fraction(11, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(63, 64) Fraction(29, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(0, 1) Fraction(1, 2)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(35, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(57, 64) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(29, 32) Fraction(7, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 32) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(0, 1) Fraction(33, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(41, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(23, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(45, 64) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(19, 64) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 64) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(51, 64) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 64) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 8) Fraction(1, 2)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(1, 8) Fraction(5, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(0, 1) Fraction(7, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=0), Box(corner=[Fraction(5, 16) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 16) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 16) Fraction(9, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(5, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(7, 8) Fraction(3, 4)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(7, 8) Fraction(11, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(7, 16) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(3, 4)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(5, 8) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 32) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 4) Fraction(0, 1)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(5, 16) Fraction(7, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(13, 32) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(11, 16) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 64) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 32) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(53, 64) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 64) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(51, 64) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 16) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(59, 64) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 16) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 64) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(27, 32) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(11, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 64) Fraction(5, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(0, 1) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 32) Fraction(45, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 16) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 4) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 16) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 16) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(9, 16) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 32) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(55, 64) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(31, 32) Fraction(11, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 64) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 32) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 8) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(63, 64) Fraction(31, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(33, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(31, 32) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 8) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(27, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(55, 64) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(9, 64) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 32) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(25, 32) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 8) Fraction(1, 2)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(7, 8) Fraction(0, 1)], size=[Fraction(1, 8) Fraction(1, 8)], phase=0), Box(corner=[Fraction(3, 4) Fraction(5, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(7, 8) Fraction(5, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(3, 4) Fraction(3, 4)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(15, 16) Fraction(1, 2)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(13, 16) Fraction(13, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(7, 8) Fraction(7, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=0), Box(corner=[Fraction(1, 8) Fraction(0, 1)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(0, 1) Fraction(1, 4)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(1, 64) Fraction(27, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(29, 32) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 16) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 64) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 8) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(23, 32) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(47, 64) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(17, 64) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 8) Fraction(7, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(11, 32) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(11, 16) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 8) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 32) Fraction(11, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(3, 16) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(29, 32) Fraction(15, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 64) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(63, 64) Fraction(1, 2)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(39, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(29, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(15, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(31, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(61, 64) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(29, 32) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 8) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 64) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 16) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(9, 64) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(31, 32) Fraction(9, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(15, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(3, 8) Fraction(1, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(15, 32) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(7, 8) Fraction(9, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(0, 1) Fraction(3, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(27, 32) Fraction(29, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(29, 32) Fraction(27, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(3, 16) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 64) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 32) Fraction(29, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(3, 64) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(11, 64) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(57, 64) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(7, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(0, 1) Fraction(17, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(17, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 32) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 16) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(31, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(21, 32) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 64) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 16) Fraction(15, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(43, 64) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(21, 64) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 16) Fraction(31, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(5, 8) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(41, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(23, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(45, 64) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 8) Fraction(9, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 16) Fraction(27, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(19, 64) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(11, 64) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 8) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(57, 64) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 16) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(51, 64) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(35, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(0, 1) Fraction(41, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 64) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(29, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(49, 64) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(53, 64) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 64) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 64) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(27, 32) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 64) Fraction(41, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 32) Fraction(5, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(27, 32) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(63, 64) Fraction(23, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 16) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 16) Fraction(15, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(31, 32) Fraction(23, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(15, 32) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(27, 32) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(1, 16) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 16) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 32) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(47, 64) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(23, 32) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(17, 64) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(35, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 32) Fraction(9, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(61, 64) Fraction(11, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 32) Fraction(13, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(31, 32) Fraction(13, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(9, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(25, 32) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(19, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(19, 32) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(23, 32) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(27, 32) Fraction(1, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(55, 64) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(25, 32) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(37, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 32) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 32) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(13, 16) Fraction(29, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(1, 8) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(27, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(15, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 64) Fraction(49, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(31, 32) Fraction(15, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(61, 64) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(9, 32) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(39, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(25, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 4) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 32) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(11, 16) Fraction(1, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(7, 8) Fraction(7, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(0, 1) Fraction(13, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(17, 64) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 32) Fraction(9, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 64) Fraction(25, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(47, 64) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 64) Fraction(9, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 64) Fraction(3, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(27, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(15, 32) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 16) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(13, 16) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 8) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 2) Fraction(1, 2)], size=[Fraction(1, 4) Fraction(1, 4)], phase=1), Box(corner=[Fraction(7, 32) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(29, 32) Fraction(1, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(63, 64) Fraction(33, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(19, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(33, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 16) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(7, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(31, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(31, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 64) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 64) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 32) Fraction(3, 4)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(3, 64) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 8) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 16) Fraction(1, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(31, 32) Fraction(1, 4)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(1, 32) Fraction(11, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 64) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 64) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 8) Fraction(29, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(9, 16) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 16) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(1, 2)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(11, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(21, 32) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(43, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(21, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(29, 32) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(3, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 8) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 2) Fraction(1, 4)], size=[Fraction(1, 4) Fraction(1, 4)], phase=1), Box(corner=[Fraction(3, 4) Fraction(1, 4)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(9, 16) Fraction(1, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(11, 32) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(0, 1) Fraction(0, 1)], size=[Fraction(1, 8) Fraction(1, 8)], phase=0), Box(corner=[Fraction(1, 8) Fraction(3, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(3, 8) Fraction(1, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(11, 16) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(3, 64) Fraction(19, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(29, 32) Fraction(5, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(15, 32) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(17, 32) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 16) Fraction(19, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(63, 64) Fraction(13, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(29, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 64) Fraction(9, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(39, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(53, 64) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(11, 64) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(61, 64) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 64) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 16) Fraction(1, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(5, 8) Fraction(1, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(19, 32) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(35, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(27, 32) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(63, 64) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(0, 1) Fraction(5, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 64) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(9, 32) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(29, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(49, 64) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(53, 64) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 4) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 32) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 8) Fraction(5, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(15, 16) Fraction(7, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(23, 32) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 16) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(17, 64) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(31, 32) Fraction(9, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(15, 16) Fraction(1, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(47, 64) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 64) Fraction(39, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(19, 32) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 4) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 8) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(9, 32) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(39, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(25, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 4) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(43, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(21, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 64) Fraction(15, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 16) Fraction(45, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(17, 32) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(35, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(25, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(13, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(61, 64) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 32) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 32) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 64) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(53, 64) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 4) Fraction(1, 2)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(25, 32) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(5, 64) Fraction(7, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(17, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 16) Fraction(3, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(3, 32) Fraction(27, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(3, 16) Fraction(13, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(61, 64) Fraction(45, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 16) Fraction(1, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(31, 32) Fraction(1, 2)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(63, 64) Fraction(39, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 16) Fraction(3, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 64) Fraction(45, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(43, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(21, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(21, 32) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 16) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(7, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(29, 32) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 64) Fraction(3, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 16) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(0, 1) Fraction(11, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(55, 64) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(9, 64) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(51, 64) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(59, 64) Fraction(49, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(21, 32) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(29, 32) Fraction(23, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(9, 32) Fraction(0, 1)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(39, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(45, 64) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 32) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(33, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 16) Fraction(11, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(11, 16) Fraction(0, 1)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(1, 16) Fraction(5, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(1, 16) Fraction(7, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(3, 16) Fraction(3, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(0, 1) Fraction(13, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(37, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(61, 64) Fraction(9, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(3, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(31, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(37, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(19, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 64) Fraction(11, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 32) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(13, 16) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(15, 16) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 8) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(51, 64) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(13, 64) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 8) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 8) Fraction(15, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(3, 4) Fraction(13, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(57, 64) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(11, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 2) Fraction(1, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(9, 16) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(9, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 16) Fraction(5, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(17, 32) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(27, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 16) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 32) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(25, 32) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(25, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 32) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(15, 16) Fraction(19, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(29, 32) Fraction(11, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(5, 32) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(0, 1) Fraction(9, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(1, 16) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 16) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 8) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 2) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(3, 16) Fraction(0, 1)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(17, 32) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(61, 64) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 16) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 32) Fraction(23, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(21, 32) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(23, 32) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 4) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(9, 32) Fraction(1, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(5, 16) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(11, 64) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 64) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(55, 64) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(9, 64) Fraction(13, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 32) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(47, 64) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(23, 32) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(17, 64) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(29, 32) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 16) Fraction(15, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(1, 4) Fraction(1, 4)], size=[Fraction(1, 4) Fraction(1, 4)], phase=1), Box(corner=[Fraction(1, 2) Fraction(3, 4)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(3, 4) Fraction(1, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(19, 32) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(23, 32) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(0, 1) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(15, 16) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 4) Fraction(3, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(7, 8) Fraction(3, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(0, 1) Fraction(19, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(19, 32) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(3, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(15, 16) Fraction(3, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 2) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 16) Fraction(29, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(31, 32) Fraction(7, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 64) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(0, 1) Fraction(23, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(29, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(27, 32) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 32) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 32) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(49, 64) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(53, 64) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(11, 64) Fraction(27, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 64) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 16) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(57, 64) Fraction(53, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(29, 32) Fraction(9, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(17, 32) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(15, 16) Fraction(11, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(61, 64) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 32) Fraction(3, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(21, 64) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(31, 32) Fraction(17, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 32) Fraction(5, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 8) Fraction(27, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(1, 8) Fraction(3, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(5, 16) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(11, 32) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(43, 64) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(21, 64) Fraction(1, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(21, 32) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(59, 64) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 16) Fraction(49, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(5, 64) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(0, 1) Fraction(15, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 16) Fraction(1, 2)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(7, 16) Fraction(7, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(43, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(3, 4) Fraction(15, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(13, 16) Fraction(3, 4)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(3, 16) Fraction(1, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(21, 32) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(21, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 8) Fraction(1, 4)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 16) Fraction(13, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(5, 32) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(33, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(25, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(63, 64) Fraction(15, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(1, 2)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(35, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(51, 64) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(13, 64) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 8) Fraction(11, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(61, 64) Fraction(5, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(59, 64) Fraction(47, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(51, 64) Fraction(7, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 64) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 32) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(17, 32) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(13, 16) Fraction(7, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(61, 64) Fraction(19, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 32) Fraction(7, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(15, 16) Fraction(1, 4)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(27, 32) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(29, 32) Fraction(13, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(3, 32) Fraction(1, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(5, 32) Fraction(1, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(63, 64) Fraction(25, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(53, 64) Fraction(57, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(61, 64) Fraction(17, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 64) Fraction(51, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 8) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(23, 32) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(47, 64) Fraction(1, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(17, 64) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 16) Fraction(1, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 16) Fraction(7, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 64) Fraction(25, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 8) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(23, 32) Fraction(31, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(15, 16) Fraction(13, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(1, 4) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 2) Fraction(1, 8)], size=[Fraction(1, 8) Fraction(1, 8)], phase=1), Box(corner=[Fraction(39, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(25, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(9, 32) Fraction(15, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(37, 64) Fraction(0, 1)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(31, 32) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 8) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(27, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(7, 32) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(0, 1) Fraction(11, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(13, 32) Fraction(1, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(13, 32) Fraction(15, 16)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 4) Fraction(31, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(63, 64) Fraction(37, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(3, 32) Fraction(3, 16)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(35, 64) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(5, 8) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(13, 16) Fraction(0, 1)], size=[Fraction(1, 16) Fraction(1, 16)], phase=0), Box(corner=[Fraction(63, 64) Fraction(21, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(7, 8) Fraction(23, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 16) Fraction(5, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(13, 32) Fraction(31, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(47, 64) Fraction(61, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(23, 32) Fraction(29, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(11, 64) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(17, 64) Fraction(3, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 64) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(63, 64) Fraction(5, 8)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(27, 32) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 32) Fraction(19, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(0, 1) Fraction(21, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(1, 64) Fraction(11, 32)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(7, 16) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 4) Fraction(5, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(13, 16) Fraction(9, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 32) Fraction(13, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(1, 8) Fraction(3, 16)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(15, 64) Fraction(59, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 32) Fraction(19, 32)], size=[Fraction(1, 32) Fraction(1, 32)], phase=1), Box(corner=[Fraction(1, 16) Fraction(3, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(7, 8) Fraction(1, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(63, 64) Fraction(43, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=0), Box(corner=[Fraction(9, 16) Fraction(7, 8)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(11, 64) Fraction(55, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1), Box(corner=[Fraction(3, 16) Fraction(3, 4)], size=[Fraction(1, 16) Fraction(1, 16)], phase=1), Box(corner=[Fraction(35, 64) Fraction(63, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=Sentinel('undefined phase')), Box(corner=[Fraction(1, 8) Fraction(7, 8)], size=[Fraction(1, 32) Fraction(1, 32)], phase=0), Box(corner=[Fraction(29, 64) Fraction(1, 64)], size=[Fraction(1, 64) Fraction(1, 64)], phase=1)}
Limits: [(-1, 1), (-1, 1)]
To increase the resolution of the result, we can increase the number of steps (maximum number of times a box can be split up) with the num_steps
parameter:
In [5]: res2 = pm.run(
...: phase,
...: limits=[(-1, 1), (-1, 1)],
...: mesh=3,
...: num_steps=8
...: )
...:
Plotting¶
For two-dimensional problems, PhaseMap includes helper functions to create plots. These functions are based on matplotlib, meaning that the usual functions used in matplotlib to customize plots are available.
To create a plot that shows the boxes in the result, use the phasemap.plot.boxes()
function. Each box is colored according to the phase of the points it contains. If there are multiple phases within the box, it is considered undecided and colored in white.
In [6]: import matplotlib.pyplot as plt
...: from matplotlib.colors import ListedColormap
...: plt.register_cmap('custom_cmap', ListedColormap(['#003399', '#EE6600'], name='custom_cmap'))
...: plt.set_cmap('custom_cmap')
...:
In [7]: pm.plot.boxes(res)
Out[7]: <Figure size 400x400 with 2 Axes>
Alternatively, you can plot the points where the function was evaluated with phasemap.plot.points()
:
In [8]: pm.plot.points(res, s=2.)
Out[8]: <Figure size 400x400 with 2 Axes>
Plotting the result of the calculation with a higher num_steps
produces the following image:
In [9]: pm.plot.boxes(res2)
Out[9]: <Figure size 400x400 with 2 Axes>
Saving Results¶
To store and retrieve the result generated by run()
, we can use the phasemap.io.save()
and phasemap.io.load()
functions:
In [10]: import os
....: import tempfile
....: tmpd = tempfile.TemporaryDirectory()
....: FILE_PATH = os.path.join(tmpd.name, 'res.json')
....:
In [11]: pm.io.save(res, FILE_PATH)
....: res_loaded = pm.io.load(FILE_PATH)
....:
For long-running calculations, we would like to store intermediate results during the calculation. This can be done by passing the save_file
parameter to run()
:
In [12]: pm.run(
....: phase,
....: limits=[(-1, 1), (-1, 1)],
....: mesh=3,
....: save_file=FILE_PATH
....: );
....:
In [13]: res_loaded = pm.io.load(FILE_PATH)
This is especially useful if the calculation might time out. The result can be used as input to a new calculation either by setting load=True
to load the result from the save_file
, or by explicitly passing it as init_result
. Since all phase evaluations were done previously, the phase function is not actually called here. We show this by passing a broken phase function:
In [14]: def phase_error(pos):
....: raise "Error!"
....:
In [15]: pm.run(
....: phase_error,
....: limits=[(-1, 1), (-1, 1)],
....: mesh=3,
....: save_file=FILE_PATH,
....: load=True
....: );
....:
In [16]: pm.run(
....: phase_error,
....: limits=[(-1, 1), (-1, 1)],
....: mesh=3,
....: save_file=FILE_PATH,
....: init_result=res_loaded
....: );
....:
In [17]: tmpd.cleanup()
Note that the limits
of the input result must be the same as those of the current calculation.
Improving Performance¶
The implementation of PhaseMap is based on Python’s coroutine functionality. This can be leveraged to improve the performance, especially when evaluating a single point takes a lot of time. Consider the following code, where we artificially increased the runtime of the phase_slow
function:
In [18]: import time
....: import asyncio
....:
In [19]: def phase_slow(pos):
....: time.sleep(0.1)
....: return phase(pos)
....:
In [20]: %timeit pm.run(phase_slow, limits=[(0, 1), (0, 1)], mesh=3, num_steps=1)
1.33 s +- 522 us per loop (mean +- std. dev. of 7 runs, 1 loop each)
The calls to phase_slow
happen sequentially, which means that the runtime increases very quickly with the number of evaluations that are done. If the code which evaluates the phase is also coroutine-based, this can be improved easily by passing a coroutine instead of a regular function to phasemap.run()
:
In [21]: async def async_phase_slow(pos):
....: await asyncio.sleep(0.1)
....: return phase(pos)
....:
In [22]: %timeit pm.run(async_phase_slow, limits=[(0, 1), (0, 1)], mesh=3, num_steps=1)
121 ms +- 270 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
However, in most cases this would require substantial changes in the function that evaluates the phase. Instead, you can also use a ThreadPoolExecutor
or ProcessPoolExecutor
to run the function in parallel on multiple threads / processes. To use this with PhaseMap, you need to wrap the function in a coroutine which submits it to the executor:
In [23]: from concurrent.futures import ThreadPoolExecutor
....: executor = ThreadPoolExecutor(max_workers=1000)
....: event_loop = asyncio.get_event_loop()
....:
In [24]: async def pool_phase_slow(pos):
....: return await event_loop.run_in_executor(executor, phase_slow, pos)
....:
In [25]: %timeit pm.run(pool_phase_slow, limits=[(0, 1), (0, 1)], mesh=3, num_steps=1)
173 ms +- 41 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
This approach can dramatically reduce the run-time needed to calculate a phase diagram with PhaseMap. It is especially suited to cases where so-called “serial farming” can be used, meaning that many concurrent processes (e.g. on a cluster) each calculate the phase at a specific point.