# Design / structure
## Repository structure
```
- SwarmPAL
- [... CI stuff ...]
- ./src/swarmpal/ (this contains what is installed as the package)
- toolboxes (separate modules containing toolbox codes)
- tfa/ (processes relating to the TFA project/toolbox)
- fac/
- dsecs/
- io/ (provide core data structre; modules to streamline connection to viresclient and others)
- utils/ (other shared utilities)
- ./tests/ (unit tests to run using pytest)
- [paired with separate SwarmPAL-data repository]
- /.docs/
- [sphinx documentation using .md files]
- docs/guides/ (notebooks that are executed as part of the documentation build)
```
## PAL-flavoured datatree as core data structure
See https://swarmpal.readthedocs.io/en/latest/guides/shared/paldata.html
- `swarmpal.io.create_paldata()` assembles different datasets together as a `DataTree`
- Objects of type `PalProcess` act like functions that can be applied to such data
- These live inside the `swarmpal.toolboxes.tfa.processes` module