The AutoRA project is a collection of packages which together form a framework for closed-loop empirical research. We invite contributions to all parts of the project, including the "core" packages, and the modules. Below is an overview of the project structure, along with brief mention of the style guide we follow as well as pointers to more detailed contribution guides for each part of the project.
If you run into any issues or have any questions regarding a contribution to AutoRA, please reach out to us on the
AutoRA forum. We look forward to hearing from you!
Contributions to AutoRA are organized into one "parent" and many "child" packages. Child packages are generally maintained by individual contributors. The parent package, along with some other core packages, is maintained by the Autonomous Empirical Research Group, as well as external contributors.
autora is the parent package which end users are expected to install. The
parent depends on core packages, such as
autora-synthetic. It also includes vetted modules (child packages) as optional dependencies which users can choose
You may contribute to any of the core packages or develop your own module as a stand-alone package (see below).
In general, AutoRA follows the PEP 8 – Style Guide for Python Code. We particularly encourage the following conventions:
- Snake case for variables and modules:
- Camel case for class names:
- Camel case with spaces for Jupyter notebooks:
- Write docstrings for all public modules, functions, classes, methods, and at the top of each file.
For documenation, AutoRA adheres to the maxim, "Everything should be made as simple as possible, but no simpler." That is, we strive to make documenation clear and comprehensive, but as concise and digestible as possible. We also encourage formatting and hyperlinking that facilitate understanding and make navigation of the docs intuitive. Finally, we encourage a strong form of title case for headings — that is, for all titles and subtitles, the first letter of each word should be capitalized, such as in the following example: This Is An Example Title
Modules include theorists, experimentalists, experiment runners, or other functionalities not covered by the core packages.
All modules are child packages and can become optional dependencies of the
autora parent package. Modules packages are
owned and maintained by you, the contributor, which provides several advantages:
- Easy setup: We provide simple templates for modules, which you can use to get started quickly
- Independence: You can develop and maintain your package independently of other child packages (and thereby avoid dependency conflicts)
- Ownership: You can publish your package on PyPI or Conda, use it in other projects, and get credit for its use.
The following packages are considered core packages, and are actively maintained by the Autonomous Empirical Research Group:
https://github.com/autoresearch/autora-coreThis package includes fundamental utilities and building blocks for all the other packages. This is always installed when a user installs
autoraand can be a dependency of other child packages.
https://github.com/autoresearch/autora-workflow: The workflow package includes basic utilities for managing the workflow of closed-loop research processes, e.g., coordinating workflows between the theorists, experimentalists, and experiment runners. Though it currently stands alone, this package will ultimately be merged into autora-core.
https://github.com/autoresearch/autora-synthetic: This package includes a number of ground-truth models from different scientific disciplines that can be used for benchmarking automated scientific discovery. If you seek to contribute a scientific model, please see the core contributor guide for details.
We welcome contributions to these packages in the form of pull requests, bug reports, and feature requests. For more details, see the core contributor guide. Feel free to ask any questions or provide any feedback regarding core contributions on the AutoRA forum.
For core contributions, including contributions to
autora-synthetic, it is possible to set up your python environment in many different ways.
One setup which works for us is described in the setup guide.
If you would like to become actively involved in the development and maintenance of core AutoRA packages, we welcome you to join the Autonomous Empirical Research Group.