---
# System prepended metadata

title: Design / structure

---

# 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

