Active development moved under Project BlueBird.
Dodo is a package that provides a scaffold for building air traffic control agents, as part of the Simurgh project. The packages is written in Python (PyDodo) and R (rdodo).
Note that the package is built to communicate with BlueBird version >= 2.0.
All the default settings and parameter values (e.g., BlueBird version number) are specified in a common configuration file.
For an overview of all functionality, please read the specification document.
(Optional first step)
conda create -n pydodo python=3.7
conda activate pydodo
...
git clone https://github.com/alan-turing-institute/dodo.git
cd dodo/PyDodo
pip install .
If BlueBird (and a simulator) are running, then one can communicate with BlueBird using PyDodo. For example:
>>> import pydodo
>>>
>>> pydodo.reset_simulation()
True
>>>
The specification document gives a detailed overview of the supported commands.
See the example notebook in the Simurgh project repository for a run through of how to use PyDodo to interact with BlueBird.
Run the tests from the project root:
pytest PyDodo/
If BlueSky and BlueBird are running and PyDodo can connect to them, all tests are run. Otherwise integration tests are skipped and only unit tests are run.
Docstrings should follow numpydoc convention. We encourage extensive documentation.
The python code itself should follow PEP8 convention whenever possible, with at most about 500 lines of code (not including docstrings) per script.
To format the code we recommend using the black code formatter.
If you have any questions that aren't discussed here, please let us know by opening an issue.
We welcome all contributions from documentation to testing to writing code. Don't let trying to be perfect get in the way of being good - exciting ideas are more important than perfect pull requests.
To contribute to PyDodo or rdodo development, please check the corresponding section (PyDodo development or rdodo development for details.
To implement Dodo in another programming language, please follow the specification document. The shared configuration file specifies common required parameters and settings.