Files and Directory Structure ============================= The project is organized so that every custom tree lives wholly inside the `examples/` package, while the shared runtime sits at the repository root. Top-level Python modules ------------------------ ``base_lpy.lpy`` The canonical L-Py grammar. It loads extern variables that point to your prototype dictionary, simulation classes, and color manager, then drives the derivation/prune/tie loop. ``simulation_base.py`` Defines `SimulationConfig` and `TreeSimulationBase`. All simulation files in `examples/` inherit from these classes. ``stochastic_tree.py`` Hosts the `TreeBranch`, `BasicWood`, `Support`, and related data structures referenced by prototypes. ``color_manager.py`` Implements `ColorManager`, which tracks per-instance color IDs and can dump them via `export_mapping` to JSON. Documentation (`docs/`) ----------------------- Sphinx project containing the pages you are reading now. Run `make html` inside `lpy_treesim/docs` to build the site locally. Examples (`examples/`) ---------------------- Each subfolder describes one tree training system. For `UFO` you will find: ``examples/UFO/UFO_prototypes.py`` Prototype classes (`Trunk`, `Branch`, `Spur`, etc.) plus the `basicwood_prototypes` dictionary. ``examples/UFO/UFO_simulation.py`` `UFOSimulationConfig` and `UFOSimulation`, consumed by the base grammar. ``examples/UFO/UFO.lpy`` Optional GUI entry point if you want to run the species manually inside L-Py. Most development happens via `base_lpy.lpy`, but the standalone files are helpful for debugging. Add a new tree type by duplicating this directory and renaming files to match your `--tree_name` argument. Tree generation utilities (`tree_generation/`) --------------------------------------------- ``tree_generation/make_n_trees.py`` CLI entry point that imports the base grammar, wires in your prototypes, and exports `.ply` meshes plus `{...}_colors.json` label maps. Accepts `--num_trees`, `--namespace`, `--rng-seed`, and `--output_dir`. ``tree_generation/helpers.py`` Contains `write` (PLY serializer) and other small utilities referenced by the generator. Supporting assets ----------------- ``dataset/`` Destination for generated `.ply` files by default. Subfolders such as `test_output/` are safe to delete or replace with your own datasets. ``media/`` and ``other_files/`` Legacy L-Py grammars, renderings, and experiments kept for historical reference.