# CICADAS (self-ConstructIng CommutAtive DiAgramS)

Using Python 3.7.8

## Packages needed

Install these with `pip3` or something beforehand

- `numpy`
- `networkx`
- `antlr4-python3-runtime`
for dev:
- `pygame`

## TODO: add proper documentation

### TODOs

- graph layout initial plan - use region subgraph
<!-- - add imports to langauge?? -->
- fix random planning stuff and inference (?)
- numpy speedup for energy calculation
- CLI tool and options (in progress)

- best guess for label positions - box around centre of arrow
- special case for single convex shape
- special cases for 4 or so morphisms - force it to be a square
