|
1 | 1 | # First-Time Contributors' Frequently Asked Questions |
2 | 2 |
|
3 | | -**TODO** |
| 3 | +## Technical Questions |
4 | 4 |
|
5 | | -## Getting Started |
| 5 | +1. How is the AutoEmulate project structured? |
| 6 | + <!-- An introduction to the project's architecture and where contributors can find key components. --> |
| 7 | + * The key component is the `AutoEmulate` class in `autoemulate/compare.py`, which is the main class for setting up and comparing emulators, visualising and summarising results, saving models, and applications such as sensitivity analysis. |
| 8 | + * All other modules in `autoemulate/` are supporting modules for the main class, such as data splitting, model processing, hyperparameter searching, plotting, saving, etc. |
| 9 | + * `autoemulate/emulators/` contains the emulator models, which are implemented as [scikit-learn estimators](https://scikit-learn.org/1.5/developers/develop.html). Architectures for deep learning models are in `autoemulate/emulators/neural_networks/`, which feed into the emulators via [skorch](https://skorch.readthedocs.io/en/latest/?badge=latest). |
| 10 | + * Emulators need to be registered in the model registry in `autoemulate/emulators/__init__.py` to be available in `AutoEmulate`. |
| 11 | + * `autoemulate/simulations/` contains simple example simulations. |
| 12 | + * `tests/` contains tests for the package. |
| 13 | + * `data/` contains example datasets. |
| 14 | + * `docs/` contains the documentation source files. We use `jupyter-book` to build the documentation. |
6 | 15 |
|
7 | | -1. How can I contribute to AutoEmulate? |
8 | | - <!-- Overview of the ways to contribute, from code to documentation, and how to get started. --> |
| 16 | +2. How do I set up my development environment for AutoEmulate? |
| 17 | + <!-- Steps to configure a local development environment, including any necessary tools or dependencies. --> |
| 18 | + * Ensure have poetry installed. If not, install it following the [official instructions](https://python-poetry.org/docs/). |
| 19 | + * Fork and clone the repository. |
9 | 20 |
|
10 | | -2. What are the guidelines for contributing code? |
11 | | - <!-- Information on coding standards, the pull request process, and how contributions are reviewed. --> |
| 21 | + ```bash |
| 22 | + git clone https://github.com/alan-turing-institute/autoemulate.git |
| 23 | + cd autoemulate |
| 24 | + ``` |
12 | 25 |
|
13 | | -3. How do I choose what to work on for my first contribution? |
14 | | - <!-- Guidance on identifying beginner-friendly issues, selecting tasks based on personal expertise, or areas of the project that need the most help. --> |
| 26 | + * Install the dependencies: |
15 | 27 |
|
16 | | -4. What coding standards and practices does AutoEmulate follow? |
17 | | - <!-- Information on coding conventions, documentation standards, and testing practices contributors should adhere to. --> |
| 28 | + ```bash |
| 29 | + poetry install |
| 30 | + ``` |
18 | 31 |
|
19 | | -5. Are there any specific development tools or environments recommended for working on AutoEmulate? |
20 | | - <!-- Suggestions for IDEs, code editors, version control systems, or other tools that facilitate development and contribute to the project. --> |
| 32 | + * If needed, enter the shell (optional when working using an IDE which recognises poetry environments): |
21 | 33 |
|
22 | | -## Making Contributions |
| 34 | + ```bash |
| 35 | + poetry shell |
| 36 | + ``` |
23 | 37 |
|
24 | | -1. How do I submit a contribution, and what is the review process? |
25 | | - <!-- Step-by-step guide on creating pull requests, what happens after submission, how contributions are reviewed, and typical timelines for feedback. --> |
| 38 | +3. How do I run tests for AutoEmulate? |
| 39 | + <!-- Instructions on how to execute the project's test suite to ensure changes do not introduce regressions. --> |
| 40 | + * We use `pytest` to run the tests. To run all tests: |
26 | 41 |
|
27 | | -2. Can I contribute by writing documentation or tutorials, and how? |
28 | | - <!-- Details on how to contribute to the project's documentation, tutorial creation, or translation efforts, including style guides or templates to follow. --> |
| 42 | + ```bash |
| 43 | + pytest |
| 44 | + ``` |
29 | 45 |
|
30 | | -3. What should I do if my pull request gets rejected or needs revision? |
31 | | - <!-- Advice on how to handle feedback on contributions, including how to make requested changes and resubmit for review. --> |
| 46 | + * To run tests with print statements: |
32 | 47 |
|
33 | | -## Technical Questions |
| 48 | + ```bash |
| 49 | + pytest -s |
| 50 | + ``` |
34 | 51 |
|
35 | | -1. How is the AutoEmulate project structured? |
36 | | - <!-- An introduction to the project's architecture and where contributors can find key components. --> |
| 52 | + * To run a specific test module: |
37 | 53 |
|
38 | | -2. How do I set up my development environment for AutoEmulate? |
39 | | - <!-- Steps to configure a local development environment, including any necessary tools or dependencies. --> |
| 54 | + ```bash |
| 55 | + pytest tests/test_example.py |
| 56 | + ``` |
40 | 57 |
|
41 | | -3. How do I run tests for AutoEmulate? |
42 | | - <!-- Instructions on how to execute the project's test suite to ensure changes do not introduce regressions. --> |
| 58 | + * To run a specific test: |
| 59 | + |
| 60 | + ```bash |
| 61 | + pytest tests/test_example.py::test_function |
| 62 | + ``` |
43 | 63 |
|
44 | 64 | ## Community and Support |
45 | 65 |
|
|
0 commit comments