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 the limits) to their phase

  • boxes is a set of Box instances

  • limits 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>
_images/tutorial_plot_boxes.png

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>
_images/tutorial_plot_points.png

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>
_images/tutorial_plot_boxes2.png

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.