|
a |
|
b/.github/CONTRIBUTING.md |
|
|
1 |
# `nf-core/deepmodeloptim`: Contributing Guidelines |
|
|
2 |
|
|
|
3 |
Hi there! |
|
|
4 |
Many thanks for taking an interest in improving nf-core/deepmodeloptim. |
|
|
5 |
|
|
|
6 |
We try to manage the required tasks for nf-core/deepmodeloptim using GitHub issues, you probably came to this page when creating one. |
|
|
7 |
Please use the pre-filled template to save time. |
|
|
8 |
|
|
|
9 |
However, don't be put off by this template - other more general issues and suggestions are welcome! |
|
|
10 |
Contributions to the code are even more welcome ;) |
|
|
11 |
|
|
|
12 |
> [!NOTE] |
|
|
13 |
> If you need help using or modifying nf-core/deepmodeloptim then the best place to ask is on the nf-core Slack [#deepmodeloptim](https://nfcore.slack.com/channels/deepmodeloptim) channel ([join our Slack here](https://nf-co.re/join/slack)). |
|
|
14 |
|
|
|
15 |
## Contribution workflow |
|
|
16 |
|
|
|
17 |
If you'd like to write some code for nf-core/deepmodeloptim, the standard workflow is as follows: |
|
|
18 |
|
|
|
19 |
1. Check that there isn't already an issue about your idea in the [nf-core/deepmodeloptim issues](https://github.com/nf-core/deepmodeloptim/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this |
|
|
20 |
2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-core/deepmodeloptim repository](https://github.com/nf-core/deepmodeloptim) to your GitHub account |
|
|
21 |
3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions) |
|
|
22 |
4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). |
|
|
23 |
5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged |
|
|
24 |
|
|
|
25 |
If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/). |
|
|
26 |
|
|
|
27 |
## Tests |
|
|
28 |
|
|
|
29 |
You have the option to test your changes locally by running the pipeline. For receiving warnings about process selectors and other `debug` information, it is recommended to use the debug profile. Execute all the tests with the following command: |
|
|
30 |
|
|
|
31 |
```bash |
|
|
32 |
nf-test test --profile debug,test,docker --verbose |
|
|
33 |
``` |
|
|
34 |
|
|
|
35 |
When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. |
|
|
36 |
Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. |
|
|
37 |
|
|
|
38 |
There are typically two types of tests that run: |
|
|
39 |
|
|
|
40 |
### Lint tests |
|
|
41 |
|
|
|
42 |
`nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to. |
|
|
43 |
To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core pipelines lint <pipeline-directory>` command. |
|
|
44 |
|
|
|
45 |
If any failures or warnings are encountered, please follow the listed URL for more documentation. |
|
|
46 |
|
|
|
47 |
### Pipeline tests |
|
|
48 |
|
|
|
49 |
Each `nf-core` pipeline should be set up with a minimal set of test-data. |
|
|
50 |
`GitHub Actions` then runs the pipeline on this data to ensure that it exits successfully. |
|
|
51 |
If there are any failures then the automated tests fail. |
|
|
52 |
These tests are run both with the latest available version of `Nextflow` and also the minimum required version that is stated in the pipeline code. |
|
|
53 |
|
|
|
54 |
## Patch |
|
|
55 |
|
|
|
56 |
:warning: Only in the unlikely and regretful event of a release happening with a bug. |
|
|
57 |
|
|
|
58 |
- On your own fork, make a new branch `patch` based on `upstream/main` or `upstream/master`. |
|
|
59 |
- Fix the bug, and bump version (X.Y.Z+1). |
|
|
60 |
- Open a pull-request from `patch` to `main`/`master` with the changes. |
|
|
61 |
|
|
|
62 |
## Getting help |
|
|
63 |
|
|
|
64 |
For further information/help, please consult the [nf-core/deepmodeloptim documentation](https://nf-co.re/deepmodeloptim/usage) and don't hesitate to get in touch on the nf-core Slack [#deepmodeloptim](https://nfcore.slack.com/channels/deepmodeloptim) channel ([join our Slack here](https://nf-co.re/join/slack)). |
|
|
65 |
|
|
|
66 |
## Pipeline contribution conventions |
|
|
67 |
|
|
|
68 |
To make the `nf-core/deepmodeloptim` code and processing logic more understandable for new contributors and to ensure quality, we semi-standardise the way the code and other contributions are written. |
|
|
69 |
|
|
|
70 |
### Adding a new step |
|
|
71 |
|
|
|
72 |
If you wish to contribute a new step, please use the following coding standards: |
|
|
73 |
|
|
|
74 |
1. Define the corresponding input channel into your new process from the expected previous process channel. |
|
|
75 |
2. Write the process block (see below). |
|
|
76 |
3. Define the output channel if needed (see below). |
|
|
77 |
4. Add any new parameters to `nextflow.config` with a default (see below). |
|
|
78 |
5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool). |
|
|
79 |
6. Add sanity checks and validation for all relevant parameters. |
|
|
80 |
7. Perform local tests to validate that the new code works as expected. |
|
|
81 |
8. If applicable, add a new test command in `.github/workflow/ci.yml`. |
|
|
82 |
|
|
|
83 |
### Default values |
|
|
84 |
|
|
|
85 |
Parameters should be initialised / defined with default values within the `params` scope in `nextflow.config`. |
|
|
86 |
|
|
|
87 |
Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`. |
|
|
88 |
|
|
|
89 |
### Default processes resource requirements |
|
|
90 |
|
|
|
91 |
Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/main/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. |
|
|
92 |
|
|
|
93 |
The process resources can be passed on to the tool dynamically within the process with the `${task.cpus}` and `${task.memory}` variables in the `script:` block. |
|
|
94 |
|
|
|
95 |
### Naming schemes |
|
|
96 |
|
|
|
97 |
Please use the following naming schemes, to make it easy to understand what is going where. |
|
|
98 |
|
|
|
99 |
- initial process channel: `ch_output_from_<process>` |
|
|
100 |
- intermediate and terminal channels: `ch_<previousprocess>_for_<nextprocess>` |
|
|
101 |
|
|
|
102 |
### Nextflow version bumping |
|
|
103 |
|
|
|
104 |
If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]` |
|
|
105 |
|
|
|
106 |
### Images and figures |
|
|
107 |
|
|
|
108 |
For overview images and other documents we follow the nf-core [style guidelines and examples](https://nf-co.re/developers/design_guidelines). |
|
|
109 |
|
|
|
110 |
## GitHub Codespaces |
|
|
111 |
|
|
|
112 |
This repo includes a devcontainer configuration which will create a GitHub Codespaces for Nextflow development! This is an online developer environment that runs in your browser, complete with VSCode and a terminal. |
|
|
113 |
|
|
|
114 |
To get started: |
|
|
115 |
|
|
|
116 |
- Open the repo in [Codespaces](https://github.com/nf-core/deepmodeloptim/codespaces) |
|
|
117 |
- Tools installed |
|
|
118 |
- nf-core |
|
|
119 |
- Nextflow |
|
|
120 |
|
|
|
121 |
Devcontainer specs: |
|
|
122 |
|
|
|
123 |
- [DevContainer config](.devcontainer/devcontainer.json) |