## Tree sorting visualization and algorithmic publishing
### Mara Karagianni in collaboration with Ahnjili ZhuParris
The initial ideas were about combining the concept of tree branches and the tree sort algorithm to map plants’ names, their year of publication, and including non-scientific content from online forums. The latter, we thought would bring some everyday narration to an otherwise very academic and abstract process of how trees are categorized and named, a methodology developed by Linnaeus in 18th century, amended and further developed in the International Code of Botanical Nomenclature, which entails the rules of plant naming. However it’s still considered biased as to the syntax and categorization followed. Ref: https://ab.pensoft.net/article/38075/
The initial ideas were about combining the concept of tree branches and the tree sort algorithm to map plants’ names, their year of publication, and including non-scientific content from online forums. The latter, we thought would bring some everyday narration to an otherwise very academic and abstract process of how trees are categorized and named, a methodology developed by Linnaeus in 18th century, amended and further developed in the International Code of Botanical Nomenclature, which entails the rules of plant naming. However it’s still considered biased as to the syntax and categorization followed.
Sorting tree algorithm can produce different types of traversals:
## Depth First Traversals:
@ -10,11 +10,17 @@ Sorting tree algorithm can produce different types of traversals:
### (b) Preorder (Root, Left, Right) : 1 2 4 5 3
### (c) Postorder (Left, Right, Root) : 4 5 2 3 1
## Breadth First or Level Order Traversal : 1 2 3 4 5
## Breadth First or Level Order Traversal : 1 2 3 4 5
[python programming and tree traversals](https://www.wikitechy.com/technology/python-programming-tree-traversals-inorder-preorder-postorder/)
## DATASETS
more information about the datasets used during the residency please see here:
[video tutorial on the different traversals](https://www.youtube.com/watch?v=gm8DUJJhmY4)
## References
[International Code of Botanical Nomenclature](https://ab.pensoft.net/article/38075/)
[python programming and tree traversals](https://www.wikitechy.com/technology/python-programming-tree-traversals-inorder-preorder-postorder/)
[video tutorial on the different traversals](https://www.youtube.com/watch?v=gm8DUJJhmY4)
Due to the very short window of implementation in terms of hands-on dataset definition and coding (2 days), we decided to visualize the tree layout with the level order traversal, since the depth first traversals, such as the pre-order traversal, requires a more complex calculations such as the logarithm of the surface, where the nodes of a tree shall be drawn on that surface. A pre-order traversal layout is to be considered when there is more time and resources to revisit the project and the code.
@ -23,22 +29,29 @@ The layout output implements the sorting tree with python code and includes 16 m
## Code repository
Tree maker is a Python module, derived from PyFPDF, for tree like design layout
It follows the logic of the [zine maker](https://git.systerserver.net/mara/zine_maker) by the same author _mara karagianni_
Tree type class and all its methods defined in tree_maker.py
Tree methods can be called by the script tree_design.py
1. Tree method keys_sorting:
**Tree** class and all its methods are defined in **tree_maker.py**
**Tree methods** can be called by the script **tree_design.py**
1. Tree method **keys_sorting**:
Soring with the class Node and Left and Right input nodes
2. Tree method draw_year:
2. Tree method **draw_year**:
Simple generating of year stamps in vertical position and
progressively moving horizontally to the left side
input data >> sorted years by the Tree keys_sorting method: trees/test_years_simple_layout.pdf
3. Tree method design_tree:
3. Tree method **design_tree:**
input data >> sorted years by the Tree keys_sorting method: trees/test_years_tree_layout.pdf
4. Tree method draw_year_name:
4. Tree method **draw_year_name**:
Year-name pair stamps in vertical position in a
branching layout, work in progress
input data >> sorted years by the Tree keys_sorting method:: trees/test_year_name_pair_layout.pdf
5. Tree method draw_year_name_reddit (work in progress):
5. Tree method **draw_year_name_reddit** (work in progress):
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
input data >> Dictionary of sorted years as keys, and a list of tree family names and tree scientific names as values. Intersecting with a dict of same tree family names as keys and tree family names as values.
All pdf output experiments are under the trees folder
input data >> Dictionary of sorted years as keys, and a list of tree family names and tree scientific names as values. Intersecting with a dict of same tree family names as keys and tree family names as values.
**All pdf output experiments are under the trees folder**
## Example
To run the code, we need a Python 3 environment and to install [PyFPDF](https://pyfpdf.readthedocs.io/en/latest/)
Then we run from the terminal:
```
python tree_design.py
```
Inside the tree_design.py we can uncomment the method we would like to run, from line 100 to 103