From 57bd412e96f10fe3681fd035f9d02b409a389353 Mon Sep 17 00:00:00 2001 From: Mara Karagianni Date: Mon, 12 Dec 2022 22:13:14 +0200 Subject: [PATCH] Add python scripts and pdf folder --- tree_design.py | 116 +++++ tree_maker.py | 585 +++++++++++++++++++++++ trees/test_draw_year_name_reddit_WIP.pdf | Bin 0 -> 38251 bytes trees/test_year_name_pair_layout.pdf | Bin 0 -> 100656 bytes trees/test_years_simple_layout.pdf | Bin 0 -> 8656 bytes trees/test_years_tree_layout.pdf | Bin 0 -> 8245 bytes 6 files changed, 701 insertions(+) create mode 100644 tree_design.py create mode 100644 tree_maker.py create mode 100644 trees/test_draw_year_name_reddit_WIP.pdf create mode 100644 trees/test_year_name_pair_layout.pdf create mode 100644 trees/test_years_simple_layout.pdf create mode 100644 trees/test_years_tree_layout.pdf diff --git a/tree_design.py b/tree_design.py new file mode 100644 index 0000000..f338b2b --- /dev/null +++ b/tree_design.py @@ -0,0 +1,116 @@ +import json +import sys +import random +from tree_maker import Tree +from fpdf import FPDF +# ref https://pyfpdf.readthedocs.io/en/latest/ + +# declare input data +inputfile = ( + "/home/mara/webdev/sortingtree/cleaned_data/year_name_fam_subset.json" +) +in_data = open(inputfile, "r") +data = in_data.read() +in_data.close() +data_json = json.loads(data) + +reddit_file = open( + "/home/mara/webdev/sortingtree/cleaned_data/fam_reddit_subset.json" +) +reddit_data = reddit_file.read() +reddit_file.close() +reddit_json = json.loads(reddit_data) + + +# declare pdf format and margins +margin = 15 + +zine = FPDF(orientation="L", unit="mm", format="A4") + +# set font for all text +# zine.add_font( +# 'CasaleNBP', '', r"./fonts/CasaletwoNbp-Bp4V.ttf", uni=True) +# tree_font = 'CasaleNBP' + +zine.add_font( + 'Kp', '', r"./fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True) +tree_font = 'Kp' +font_size = 15 +zine.set_font(tree_font, '', font_size) + +zine.set_margins(margin, margin, margin) +zine.add_page() +zine.set_xy(zine.w/2+margin, margin) + +tree = Tree(zine) +root = tree.keys_sorting(data_json) + + +def make_bin_tree(output, zine, tree, root): + global data_json + global margin + + tree.draw_year_name(data_json, root, zine.h, zine.w, margin) + zine.output(output) + print("PDF saved as {}".format(output)) + + +def make_bin_tree_reddit(output, zine, tree, root, reddit_json): + global data_json + global margin + + tree.draw_year_name_reddit( + data_json, reddit_json, root, zine.h, zine.w, margin) + zine.output(output) + print("PDF saved as {}".format(output)) + + +def make_bin_tree_position_nodes(output, zine, tree, root): + global data_json + global margin + + tree.preorder_position_nodes(data_json, root, zine.h, zine.w, margin) + print("PDF saved as {}".format(output)) + + +def make_bin_tree_weird_position_nodes(output, zine, tree, root): + global data_json + global margin + + tree.weird_position_nodes(data_json, root, zine.h, zine.w, margin) + print("PDF saved as {}".format(output)) + + +if __name__ == '__main__': + # input text and output pdf + if len(sys.argv) > 1: + if len(sys.argv) == 4: + output = sys.argv[3] + inputfile = sys.argv[2] + version = sys.argv[1] + else: + version = sys.argv[1] + output = "./trees/test_%d.pdf" % int(version) + + else: + version = random.randint(1, 100) + inputfile = "./trees/array.txt" + output = "./trees/test_%d.pdf" % int(version) + +# make_bin_tree(output, zine, tree, root) +# make_bin_tree_reddit(output, zine, tree, root, reddit_json) +# make_bin_tree_position_nodes(output, zine, tree, root) + make_bin_tree_weird_position_nodes(output, zine, tree, root) + + # TODO: add functions of the following tree methods +# tree.draw_year(json_data, root, x, y, zine.h, zine.w, margin, steps=30) +# tree.print_nodes(root) +# tree.draw_year_name_reddit( +# treejson_data, root, x, y, max_height, margin, width) +# tree.print_bin_tree(root, x, y, max_height, margin, width, steps=max_height/3) +# tree.print_tree_terminal(root) +# tree.design_tree(json_data, font_size, margin, steps=10) +# root = zine.tree_sorting([4, 8, 7, 9, 10, 1, 20, 5, 15, 11]) +# root = zine.tree_sorting(["BIN", "ARY", "IS", "FOR", "SORTING", "TREES"]) +# sentence = "BIN ARY IS FOR SORTING TREES" +# root = tree.tree_sorting(sentence.split()) diff --git a/tree_maker.py b/tree_maker.py new file mode 100644 index 0000000..8ecfc23 --- /dev/null +++ b/tree_maker.py @@ -0,0 +1,585 @@ +#!/bin/python +""" +A module for generating tree sorting layout +based on pyFPDF. +GPL3 License, Mara Karayanni December 2022 +""" +import glob +import json +import random +import re +import subprocess + + +class Tree: + def __init__(self, zine): + self.zine = zine + + def design_tree(self, title, size, margin, steps): + """ Simple layout of branching with black color""" + initial_steps = steps + for letter in title: + + if self.zine.y + size > self.zine.page_break_trigger: # self.zine.h: + print(self.zine.h) + print(self.zine.get_y()) + self.zine.add_page() + center_x = self.zine.w/2 + margin + self.zine.set_xy(center_x, margin) + steps = initial_steps + + point_a = self.zine.get_x() + point_b = self.zine.get_y() + print(point_a, point_b) + self.zine.cell(size, size, letter) # letter here is sorted by the tree + node_right = self.zine.get_x() + steps / 2 + node_left = point_a - steps / 2 + point_bb = point_b + steps + self.zine.line(point_a, point_b, node_left, point_bb) + self.zine.line(point_a, point_b, node_right, point_bb) + self.zine.set_xy(node_left, point_bb) + steps *= 2 + + def keys_sorting(self, data): + """ Make a list of sorted keys using Python's sorted function""" + global res + if type(data) is dict: + for key in sorted(data.keys()): + res.append(key) + else: + for key in sorted(data): + res.append() + return res + + def tree_sorting(self, data): + """ Make a list of keys, which are first sorted + by the insert_node function + """ + global node + if type(data) is dict: + for key in data.keys(): + node = self.insert_node(node, key) + else: + for key in data: + node = self.insert_node(node, key) + return node + + def insert_node(self, node, key): + """ Sorting key elements by recursive call of the function + and the use of the class Node, which has left and right keys + """ + + if node is None: + node = Node(key) + return node + if (key < node.key): + + # recurse + node.left = self.insert_node(node.left, key) + + elif (key > node.key): + # recurse + node.right = self.insert_node(node.right, key) + + return node + + def print_nodes(self, node): + """ Print left and right keys of an instance of the class Node, + mostly for debugging purposes + """ + global res + if (node is not None): + self.print_nodes(node.left) + print("LEFT SORTED KEY IS", node.key, end="\n") + res.append(node.key) + self.print_nodes(node.right) + print("RIGHT SORTED KEY IS", node.key, end="\n") + return res + + def draw_year(self, data, root, x, y, + page_height, width, margin, steps=30): + """ Tree method draw_year layout: + Simple year stamps in vertical position and progressively + horizontally to the left side + """ + letter_size = 8 + right_margin = margin + parent_x = x + parent_y = y + + if root is not None: + sorted_root = self.keys_sorting(data) + print("SORTED ROOT", sorted_root) + for key in sorted_root: + + if parent_y >= page_height-margin*2: + self.zine.add_page() + self.zine.set_xy(width/2, margin) + print("NEW PAGE", "Y", self.zine.get_y()) + if parent_x >= width or parent_x <= margin: + self.zine.set_xy(width/2, parent_y) + + parent_x = self.zine.get_x() + parent_y = self.zine.get_y() + + # draw the year + self.zine.cell(letter_size, letter_size, str(key)) # draw the root + print("YEAR", key, "YEAR X Y", parent_x, parent_y) + + parent_x -= steps/5 + parent_y += steps + self.zine.set_xy(parent_x, parent_y) + + def draw_year_name(self, data, root, page_height, margin, steps=30): + """ Tree method draw_year_name layout: + Simple year and name/letters stamps in vertical position + and progressively horizontally to the left side + """ + letter_size = 8 + width = self.zine.w + parent_x = self.zine.get_x() + parent_y = self.zine.get_y() + + if root is not None: + sorted_root = self.keys_sorting(data) + print("SORTED ROOT", sorted_root) + for key in sorted_root: + + if parent_y >= page_height-margin*2: + self.zine.add_page() + self.zine.set_xy(width/2, margin) + print("NEW PAGE", "Y", self.zine.get_y()) + if parent_x >= width or parent_x <= margin: + self.zine.set_xy(width/2, parent_y) + + parent_x = self.zine.get_x() + parent_y = self.zine.get_y() + + # draw the year + self.zine.cell(letter_size, letter_size, str(key)) # draw the root + print("YEAR", key, "YEAR X Y", parent_x, parent_y) + + # draw the tree names + val = data[key]["scientificName"] + child_x = parent_x - steps + child_y = parent_y + letter_size + if child_x <= margin: + print("CHILD OFFSET X", "PARENT X Y", parent_x, parent_y, "STEPS", steps) + if child_y >= page_height: + print("CHILD OFFSET Y", "PARENT X Y", parent_x, parent_y, "STEPS", steps) + if type(val) is list: + for v in val: + self.zine.set_draw_color(r=255, g=128, b=0) + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(v)) # draw child + child_y +=5 + child_x += self.zine.get_x() + 5 + else: + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(val)) # draw child + child_x += self.zine.get_x() + 5 + + previous_x = parent_x + previous_y = parent_y + parent_x -= steps/5 + parent_y += steps + self.zine.set_xy(parent_x, parent_y) + self.zine.set_draw_color(r=128, g=255, b=0) + self.zine.line( + previous_x, previous_y, + self.zine.get_x(), self.zine.get_y() + ) + + def draw_year_name_reddit(self, tree_json, reddit_json, root, page_height, + width, margin, steps=30): + """ Tree method draw_year_name_reddit layout: + Branching sorted year followed by trees named that year on the + left side and reddit blog titles related to those trees + on the right side""" + + letter_size = 8 + right_margin = margin + parent_x = self.zine.get_x() + parent_y = self.zine.get_y() + + if root is not None: + sorted_root = self.keys_sorting(tree_json) + print("SORTED ROOT", sorted_root) + for key in sorted_root: + + if parent_y >= page_height-margin*2: + self.zine.add_page() + self.zine.set_xy(width/2, margin) + print("NEW PAGE", "Y", self.zine.get_y()) + if parent_x >= width or parent_x <= margin: + self.zine.set_xy(width/2, parent_y) + + parent_x = self.zine.get_x() + parent_y = self.zine.get_y() + + # draw the year + self.zine.cell(letter_size, letter_size, str(key)) # draw the root + print("YEAR", key, "YEAR X Y", parent_x, parent_y) + + # draw the tree names + val = tree_json[key]["scientificName"] + family = tree_json[key]["family"] + child_x = parent_x - steps + child_y = parent_y + letter_size + if type(val) is list: + for v in val: + self.zine.set_draw_color(r=255, g=0, b=0) + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(v)) # draw child + + # draw reddit + self.zine.set_draw_color(r=0, g=0, b=255) + for r in reddit_json.keys(): + if r in family: + reddit_list = reddit_json[r] + print("REDIT", reddit_list) + reddit_x = width -2*margin - child_x + reddit_y = child_y + for reddit in reddit_list: + reddit_y += steps/5 + self.zine.set_xy(reddit_x, reddit_y) + self.zine.cell(letter_size, letter_size, str(reddit)) # draw child + self.zine.line(child_x, child_y, reddit_x, reddit_y) + self.zine.set_xy(child_x, child_y) + + child_y +=5 + child_x += self.zine.get_x() + 5 + else: + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(val)) # draw child + child_x += self.zine.get_x() + 5 + + previous_x = parent_x + previous_y = parent_y + parent_x -= steps/5 + parent_y += steps + self.zine.set_xy(parent_x, parent_y) + self.zine.set_draw_color(r=128, g=255, b=0) + self.zine.line(previous_x, previous_y, self.zine.get_x(), self.zine.get_y()) + + def preorder_position_nodes(self, data, root, page_height, + width, margin, steps=30): + letter_size = 5 + right_margin = margin + parent_x = self.zine.get_x() + parent_y = self.zine.get_y() + + if root is not None: + sorted_root = self.keys_sorting(data) + print("SORTED ROOT", sorted_root) + for key in sorted_root: + + if parent_y >= page_height: + self.zine.add_page() + self.zine.set_xy(width/2, margin) + print("NEW PAGE", "Y", self.zine.get_y()) + if parent_x >= width or parent_x <= margin: + self.zine.set_xy(width/2, parent_y) + + parent_x = self.zine.get_x() + parent_y = self.zine.get_y() + + # draw the year + self.zine.cell(letter_size, letter_size, str(key)) # draw the root + print("YEAR", key, "YEAR X Y", parent_x, parent_y) + + # draw the tree names + val = data[key]["scientificName"] + child_x = parent_x - steps + child_y = parent_y + letter_size + if child_x >= right_margin: + print("CHILD OFFSET", "PARENT X Y", parent_x, parent_y, "STEPS", steps) + print("VALUE", val, "X", child_x, "Y", child_y) + if type(val) is list: + for v in val: + self.zine.set_draw_color(r=255, g=128, b=0) + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(v)) # draw child + child_y +=5 + child_x += self.zine.get_x() + 5 + else: + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(val)) # draw child + child_x += self.zine.get_x() + 5 + +# parent_x -= steps/5 +# parent_y += steps*2 +# self.zine.set_draw_color(r=128, g=255, b=0) +# self.zine.line(self.zine.get_x(), self.zine.get_y(), parent_x, parent_y) + + + def weird_position_nodes(self, data, root, page_height, width, margin, steps=30): + letter_size = 5 + right_margin = margin + + x = self.zine.get_x() + y = self.zine.get_y() + + + if root is None: + root = self.keys_sorting(data) + print("SORTED ROOT", root) + for key in root: + parent_x = x + parent_y = y + + # draw the year + self.zine.cell(letter_size, letter_size, str(key)) # draw the root + print("YEAR", key, "YEAR X Y", parent_x, parent_y) + + # draw the tree names + val = data[key]["scientificName"] + child_x = parent_x - steps + child_y = parent_y + letter_size + if child_x >= right_margin: + print("CHILD OFFSET", "PARENT X Y", parent_x, parent_y, "STEPS", steps) + print("VALUE", val, "X", child_x, "Y", child_y) + if type(val) is list: + for v in val: + self.zine.set_draw_color(r=255, g=128, b=0) + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(v)) # draw child + child_y +=5 + child_x += self.zine.get_x() + 5 + else: + self.zine.line(parent_x, parent_y, child_x, child_y) + self.zine.set_xy(child_x, child_y) + self.zine.cell(letter_size, letter_size, str(val)) # draw child + child_x += self.zine.get_x() + 5 + + x -= steps/5 + y += steps + self.zine.set_draw_color(r=128, g=255, b=0) + self.zine.line(parent_x, parent_y, x, y) +# self.zine.set_xy(x, y) + + if y >= page_height: + print("NEW PAGE") + self.zine.add_page() + self.zine.set_xy(x, margin) + print("Y", self.zine.get_y()) + if x >= width or x <= margin: + self.zine.set_xy(width/2, y) +# else: +# self.zine.set_xy(x, y) + +# self.wrap_page(x, y, page_height, width, margin) + + def position_nodes(self, root, x, y, page_height, margin, steps=26): + letter_size = 10 + if self.zine.get_y() >= page_height: + self.zine.add_page() + self.zine.set_xy(margin, margin) + x = self.zine.get_x() + y = self.zine.get_y() + else: + self.zine.set_xy(x, y) + root_x = x + root_y = y + + if root is not None: +# if root.left: # left display node name + + # draw left branch + self.zine.set_draw_color(r=255, g=128, b=0) + node_left_x = root_x - steps / 2 + node_left_y = root_y + steps + self.zine.cell(letter_size, letter_size, str(root.key)) # letter is sorted + self.zine.line(root_x, root_y, node_left_x, node_left_y) + print("LEFT NODE", root.key, node_left_x, node_left_y) + + # is there more nodes at left side? + steps *= 2 + self.zine.set_xy(node_left_x, node_left_y) + self.position_nodes(root.left, node_left_x, node_left_y, page_height, margin) + +# if root.right: # right display node name + + # draw right branch + self.zine.set_draw_color(r=128, g=255, b=0) + node_right_x = root_x + steps / 2 + node_right_y = root_y + steps + self.zine.cell(letter_size, letter_size, str(root.key)) # letter is sorted + self.zine.line(root_x, root_y, node_right_x, node_right_y) + print("RIGHT NODE", root.key, node_right_x, node_right_y) + + # is there more nodes at right side? + steps *= 2 + self.zine.set_xy(node_right_x, node_right_y) + self.position_nodes(root.right, node_right_x, node_right_y, page_height, margin) + + def print_2d_tree(self, root, space=0, LEVEL_SPACE = 5): + if (root == None): return + space += LEVEL_SPACE + self.print_2d_tree(root.right, space) + # print() # neighbor space + for i in range(LEVEL_SPACE, space): print(end = " ") + print("|" + str(root.key) + "|<") + self.print_2d_tree(root.left, space) + + def draw_tree(self, node, level=0, res=[]): + if level < len(res): + if node: + res[level].append(node.key) + else: + res[level].append(" ") + else: + if node: + res.append([node.key]) + else: + res.append([" "]) + if not node: + return + self.draw_tree(node.left, level+1, res) + self.draw_tree(node.right, level+1, res) + print("RES from draw tree is", res) + return res + + def print_tree(self, node, x, y, width, margin, page_height, steps=5): + letter_size = 20 + + tree_array = self.draw_tree(node) + h = len(tree_array) + white_spaces = (2**h)-1 + + def print_spaces(n, x, i): + for i in range(n): + if i % 2 == 0: + x += float(steps/2) + else: + x -= float(steps/2) + self.zine.set_xy(x, y) + + prev_x = None + prev_y = None + for level in tree_array: + print("LEVEL is", level, "AND OF TYPE", type(level)) + for i, key in enumerate(level): + if i==0 and len(level) == 1: + self.zine.cell(letter_size, letter_size, str(key)) # letter is sorted + print("FIRST NODE", key, "POSITION OF KEY", x, y, "i is", i) + prev_x = x + prev_y = y + self.zine.set_draw_color(r=0, g=255, b=0) + print_spaces(1+2*white_spaces, i, x) +# self.zine.line(prev_x, prev_y, self.zine.get_x(), self.zine.get_y()) + print("NEW xy after first node", self.zine.get_x(), self.zine.get_y()) + else: + if key == " ": + pass + else: + print("POSITION OF KEY", key, self.zine.get_x(), self.zine.get_y(), "i is", i) + self.zine.line(prev_x, prev_y, self.zine.get_x(), self.zine.get_y()) + self.zine.cell(letter_size, letter_size, str(key)) # letter is sorted + print_spaces(1+2*white_spaces, i, x) + y += steps/2 + if i % 2 == 0: + x += float(steps) + else: + x -= float(steps) + self.zine.set_xy(x, y) + print() + + def print_bin_tree(self, node, x, y, width, margin, page_height, steps=5): + letter_size = 20 + + tree_array = self.draw_tree(node) + h = len(tree_array) + white_spaces = (2**h)-1 + + def print_spaces(n, x, i): + for i in range(n): + if i % 2 == 0: + x += float(steps/2) + else: + x -= float(steps/2) + self.zine.set_xy(x, y) + + prev_x = None + prev_y = None + count = 0 + pos_level = {} + for level in tree_array: + # TODO: count the levels and revisit them, keep a dict of level and + # x,y + count += 1 + pos_level[count] = (x, y) + print("LEVEL is", level, "AND OF TYPE", type(level)) + for i, key in enumerate(level): + if i==0 and len(level) == 1: + prev_x = x + prev_y = y + self.zine.cell(letter_size, letter_size, str(key)) # letter is sorted + print("FIRST NODE", key, "POSITION OF KEY", x, y, "i is", i) + print_spaces(1+2*white_spaces, i, x) + print("NEW xy after first node", self.zine.get_x(), self.zine.get_y()) + else: + if key == " ": + pass + else: + print("POSITION OF KEY", key, self.zine.get_x(), self.zine.get_y(), "i is", i) + self.zine.cell(letter_size, letter_size, str(key)) # letter is sorted + print_spaces(1+2*white_spaces, i, x) + y += steps/2 + if i % 2 == 0: + x += float(steps) + else: + x -= float(steps) + self.zine.set_xy(x, y) + print("LEVELS ARE", pos_level) + for count, coord in pos_level.items(): + self.zine.set_draw_color(r=0, g=255, b=0) + try: + self.zine.line(coord[0], coord[1], pos_level[count+1][0], pos_level[count+1][1]) + except Exception as e: + print(e) + + def print_tree_terminal(self, node): + + tree_array = self.draw_tree(node) + h = len(tree_array) + white_spaces = (2**h)-1 + + def print_spaces(n): + for i in range(n): + print(" ",end="") + + for level in tree_array: + white_spaces = white_spaces//2 + for i, key in enumerate(level): + if i==0: + print_spaces(white_spaces) + print(key, end="") + print_spaces(1+2*white_spaces) + print() + + def wrap_page(self, x, y, page_height, page_width, margin): + right_margin = page_width/2 + if y >= page_height: + self.zine.add_page() + self.zine.set_xy(right_margin, margin) + elif x >= page_width: + self.zine.set_xy(right_margin, y) + else: + self.zine.set_xy(x, y) + +class Node: + + def __init__(self, item = 0): + self.key = item + self.left, self.right = None, None + +root = None +res = [] diff --git a/trees/test_draw_year_name_reddit_WIP.pdf b/trees/test_draw_year_name_reddit_WIP.pdf new file mode 100644 index 0000000000000000000000000000000000000000..58d2e7463e9f1141164b59797d2b9c96725c11a3 GIT binary patch literal 38251 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 literal 0 HcmV?d00001 diff --git a/trees/test_years_simple_layout.pdf b/trees/test_years_simple_layout.pdf new file mode 100644 index 0000000000000000000000000000000000000000..098a4b3473209adff3d3a587798aad2cab517cc1 GIT binary patch literal 8656 zcmc&(2{@E%`;Qi=t**C^6JBgu~w!zRaW-LRfj&u@JmZUnzDJKqPiHefy zR4P;GOC@7(uuKiluQpL=^XoGq>Nu=;ou9>E|y zFMkw`hNedbu@JN~(~pG$|3g?@K7s|UE-17ME0h-&;>`+0a3c&09+wZ=LlFX`jg3(( zt`8gqlB1(pu{nHJ2!giaF!?M?mN(A_4DP_<`tdg)SP};G3FU{dn1QH>gKo8k^R8g# z&T6hUsx-OMVi2zKVW*`8DSMGvOvTlTKK4@QD{|DK&oZkukF4(g%Sp0VW=Yx~civG- zJC^P3FQ^lN_)=k~qH0e}frmGG>tc9?Xa&QOv~6ewx)>*e@5ICwUVyKZ6)N$1s(;?M_9_ zjrM=M30}*#&KKWSUrm><{dBviV77}u;mc0%#fMeX8k|El7rdVn?)oREC-3c@&UF=u z^c6c(JS>SB9H*w;49%s|CGqrGGLK2YmWnG1v*oLLPl$O~HrmXQ;XUgNn!mwg=D=XT z*b|wnlF##AWT^=rJ?-sLsEGVk?0g#S*;Ks9<2(E}cu^+f1<`-eztiEoyYTCM7eJ^!4&-a|H93V&6(6>IOYw;(gu zWkG_{yd|+JlrHJ#XVs4R>^P`Y@@hqh4MXeb?fiyf>$a3CORtBTA95q;C=atXgF=hD zYJolqg3_*yXQ-zN#0S3&it}bakNHGzJE8YJV@b|N6Hu!$M0ny2*b9n$WO; z{f}O8ETq2+G?82RKhZMvY_+SQ)~l=LQpx_e)PlciS)*F2pyIUS+ZElpa>d&k!aU>h zt(&gngtsyj+{zDw{WHO>oZg$);Abt_6JQrR>bxT>F48p1dcF?`7 z%AP;EmK(o^ny*VVD|@y(#NT$$;yZ_;E9RtS%4zk-dz!W-a$@xD)`n*b)Nl$moWTm| zm+}4@N3T1^N!qBoXf3^dUS41`{m+##9g*vr3z;;G`AZUMPhLsqmmb54uz_h=g|w1y zVD^KiA1h+}h4lAeCh9P;&|%KJ4IJiTX0WnhQmVXQ9><0%E-pwEwAUm1c2pIA`K&QV zUpAHcq&|sphR*lOpUshcc+ z-W{dJ$k?^#cjZWb>9o1(r?<2ym(W%7_Z6s;l}Q=Qjf6$t~0oo7x0i1{*5Yqn&w4KvoppnjorM%vt26uhR(6gC_9895r5M91-$V^7IADs$W<3pl7rK|Q z$L+i_I3#oCyif5%kE9piEbR9A_vKRL0@RkqYq&V7q*))4%}Z4OkQ=oZ@3G?) zrDMMB`eZK+dnuJ=Mlx~t9GSz>>zeOiRQ_0A^}r|BIpFE0#^=Fnj2n$6Bzsf-08%dp;*{et~zFtJHGBiK zAM^w`5luS)PZA>R+s0huO-u7~0uxXsz`r+t9&3ep7*h4oMIp(;&p|skb^a@tw^cNDeci+J5 z2i*Wp#0?1P{~j|p(TGE@V`9X?3m8iUem=s9K<6Zd?b_{7{d(iU!Cy316z?psbG*%? zY+vYkTMD=V<=`dwYbIu!~)Y@;BMwwYsv}|L6Fv??N^-efbSVsZ0%Vkqng~c zF(P=w;~6kWQxT>Di_+%`8k#m5zl&=*w|Uw_ecG$3n0?cpg`&{*Y@bks0dKAg0#(rk zf#A9z&}q0J!f+V8M%u9>0@x7=?1+faQo10x5fR*o2yR4V4GL|+3xoMT9))&f`LLPh zya?#c=j2~cR)FfYEaumHny3<_<|3}wL<1nmfF z5N2jeEtsK94olC;+!=*l#szf(HrEe9+xmd|0-GPHXM;jpvO>Ka3cV6xKuHFIBVrI71&a_!RD=xPBqB-prVt1td<+R8z(3GV z1lxeJV{a zE|eUThLUjRNj*ntA&*LcqW}&CFBGB>;3yL$;O~hvTr*t1@IAVIFani~P)9a}#lYpl zg}@2m-&psF3xNxSe9#pOQduleW+;jUq4W4&$2vnH5a(cl+ZGA|?H&;t0~K^9fuW#+ z+gj3j*0z?8%pe3W^k5T|8O-@L{Tr=W;RzG!39z>yAv}I)YXLD^uFF1&}UpisQh3lpa*tjE%3sG1~I)^ zAxthP_R%olF-B-s;1MRkBJHESynMeQj*N7Mc5AF1{1k5U>*~D2LSQjbh=p*?a4l>u z>nmJAydXHh*x%%0oA9=c-sAroCpaYRE4-UijKTQjMWNwk9>H>|SpxV%0|d+=7Dq%O zqxOi8=;6tbv|t9=u-JYZ_y|QvgNmmgsEmRZIH>uk>4d_-+5)A3qX0!k+wz$lwznDA zkHZ3oilAMAfpG_8fS-=+&`@ytE7?AvS_-WR90^oZSvUkQwA2%I6)NxO-oDmXsi4c$ z0xazHwd&e&%T{_TX4QZQYj~q6IMxUW`pyStpPFlhgRmxf#>`U!S2*(>i~i zMuA5tq7e`Qkqr|_z=nTo$D<`@U{k-7V#1vHuq-d(&-|zvwnB`_v(I zG~X*mN`_$P`TOV;g9F`4YW5qc$xhw!GLj0L*YtSaSa;rZR#CK@M%%*GhRaqh zi>uYyAtPwJV!AlO`sxaQce#exEyd;D_;jaMYi6&Fe33!J+&U@A`gk9uc&!z#zeOi} zs8@e+%P%L%YpzCd%e}3MUHL`q?N)M%SA7?*bxSDJR@t${ED?=B0X(}+>!(J3Mu9*W^^>otNBv&E;2z)VBv~iWw!nA_zf6mx%ny+@*Qk3g-;#G}u6M8<+2q}uhU(9mGgdXX*h?+)TsODV>QVit zj$`IeKUdQqIUHMxDv$4e%-IqPuE?$O?Fc;a>%E(piJ(5=Cns&@w`iZ>GWQ|NO9<8-TZDw!nJ{*r&9Ns z22Q+Y@2F(stj^aefjSO!<#O_%dPkU17KeZK_kXm^FDtCsziQdWwZE?_KYKy7DCv)O znfY5^>Io#e125=xOQj#_*HE!~*DsTd3@s2?znM8;(SkL|aImL2DX^ScW=FYWHJ(`O zu>KiRH_F+3c^LJYQpUGGt5sxP?{DF???YavO~DGQFV0@d*p2Ec8Nan{5lB3XM!Ka6 z1Cs4&4z&Sf4V6r-Q?(i@huu1kRe0~MJG3W4d~jfA#o+6mLn#%hr!t4rdpYXM!#@)TF|tB zp>J4rChD?2`RI{r^*ySImGzss*3B9ZdzDLTUb&<_IJEsF`c`*Zm3ZwhO~iVJH&>wd za^?1en=1oP?2B5zDGYBq`{a$92Gq@c$cBS=icW;NpV+lmEt!MUxpXpqc;!t0=aFlp7GBg(%|8?P(U19iOxwaI zYE=6dUYf|_@+?h{h@57VxZ%_LulKMv%bwBp$8@!Jt)a6!F4`Od6@SzHNe)`P?Eb~4N*I=Kvf z`oC5tf}NOd ztYmY|xS{N^{9}T99sdvjzKV_pdki#4T@W;#6#*hZ+d%Ne)O_@9G5WRz5hnE62#p4Q zK<@*57Wk5C1su3A^M^B_S1tGQXMqS22mx|J?lPVz3n%pn1F;&S?Hp+Z=f&!i^>N4s zK0n9+jShS2sCy=M|$e1bTfrn|J$Q%SLdCJ}hcv!WC&$tc|C{xdz2tq

m)PDd4;SPNO literal 0 HcmV?d00001 diff --git a/trees/test_years_tree_layout.pdf b/trees/test_years_tree_layout.pdf new file mode 100644 index 0000000000000000000000000000000000000000..79fe491d84922186a7ce20be792c6ce6a07e4d98 GIT binary patch literal 8245 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 literal 0 HcmV?d00001