Detailed LayoutΒΆ

There are several parts to the project.

The module ete4 has submodules to create trees (core/tree.pyx) and parse newicks (parser/newick.pyx) and other formats, do tree-related operations (core/operations.pyx), and more.

The smartview module contains an http server based on bottle (in explorer.py). It exposes in an api all the operations that can be done to manage and represent the trees, and also provides access to gui.html, which shows a gui on the browser to explore the trees. It uses the code in gui.js and all the other imported js modules in the same directory.

It also serves an entry page with a short description and an easy way to upload new trees, upload.html (which uses upload.js).

There are tests for most of the python code in tests. They can be run with pytest.

A more complete layout with the relevant parts for tree exploration:

README.md
pyproject.toml  # build system (see PEP 518)
setup.py
ete4/  # the module directory
  core/
    tree.pyx  # the Tree class
    operations.pyx  # tree-related operations
    text_viz.py  # text visualization of trees
  parser/
    newick.pyx  # newick parser
    nexus.py  # functions to handle trees in the nexus format
    ete_format.py  # ete's own optimized format
    indent.py  # parser for indented trees
  smartview/
    draw.py  # drawing classes and functions to represent a tree
    explorer.py  # http server that exposes an api to interact with trees
    layout.py
    faces.py
    coordinates.py
    graphics.py
    static/  # files served for the gui and uploading
      gui.html  # entry point for the interactive visualization (html)
      gui.css
      upload.html  # landing page with the upload tree interface
      upload.css
      images/
        icon.png
        spritesheet.png
        spritesheet.json
      js/
        gui.js  # entry point for the interactive visualization (js)
        menu.js  # initialize the menus
        draw.js  # call to the api to get drawing items and convert to svg
        pixi.js
        minimap.js  # handle the current tree view on the minimap
        zoom.js
        drag.js
        download.js
        contextmenu.js  # what happens when one right-clicks on the tree
        events.js  # hotkeys, mouse events
        search.js
        collapse.js
        label.js
        tag.js
        api.js  # handle calls to the server's api
        upload.js  # upload trees to the server
      external/  # where we keep a copy of external libraries
        readme.md  # description of where to find them
        tweakpane.min.js
        sweetalert2.min.js
        pixi.min.mjs
tests/  # tests for the existing functionality, to run with pytest
docs/  # documentation