You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -10,40 +10,51 @@ Here, you will use the nf-core template to kickstart your pipeline development u
10
10
11
11
nf-core tooling has commands for pipeline users and developers.
12
12
13
-
You can view all of the tooling using the `--help` argument.
13
+
View all of the tooling using the `nf-core --help` argument.
14
14
15
-
```
15
+
```bash
16
16
nf-core --help
17
17
```
18
18
19
-
Here we will focus on the tooling to assist pipeline developers, starting with the `nf-core create` command.
19
+
Here we will focus on the tooling to assist pipeline developers, starting with the `nf-core pipelines create` command.
20
20
21
-
### `nf-core create`
21
+
### `nf-core pipelines create`
22
22
23
-
The `nf-core create` command makes a new pipeline using the nf-core base template with a pipeline name, description, and author. It is the first and most important step for creating a pipeline that will integrate with the wider Nextflow ecosystem.
23
+
The `nf-core pipelines create` command makes a new pipeline using the nf-core base template with a pipeline name, description, and author. It is the first and most important step for creating a pipeline that will integrate with the wider Nextflow ecosystem.
24
24
25
25
```bash
26
-
nf-core create
26
+
nf-core pipelines create
27
27
```
28
28
29
-
When executing this command you will be given a series of prompts to setup your pipeline.
29
+
Running this command will open a Text User Interface (TUI) for pipeline creation.
30
30
31
-
```bash
32
-
? Workflow name <name>
33
-
? Description <description>
34
-
? Author <name>
35
-
? Do you want to customize which parts of the template are used? (y/N) <n>
@@ -129,34 +140,40 @@ The role each of these branches have in pipeline development will be explained i
129
140
130
141
Create a new GitHub repository named `myfirstpipeline` and push your new pipeline using the commands above. You will need to replace `<USERNAME>` and `<REPO>` with your GitHub username and `myfirstpipeline`, respectively.
131
142
143
+
-->
144
+
132
145
## Template tour
133
146
134
147
The nf-core pipeline template comes packed with a lot of files and folders.
135
148
149
+
Here, almost everything was included in the template to create opportunities to explore these features.
150
+
136
151
While the template may feel overwhelming, a complete understanding isn't required to start developing your pipeline.
137
152
138
153
### Workflows, subworkflows, and modules
139
154
140
-
The nf-core pipeline template has a `main.nf`file that calls `mypipeline.nf` from the `workflows` folder. The `mypipeline.nf` file is the central pipeline file that is used to bring everything else together. Instead of having one large monolithic pipeline script, it's broken up into smaller script components, namely, modules and subworkflows:
155
+
The nf-core pipeline template has a `main.nf`script that calls `myfirstpipeline.nf` from the `workflows` folder. The `myfirstpipeline.nf` file inside the workflows folder is the central pipeline file that is used to bring everything else together.
141
156
142
-
-**Modules** are wrappers around a single process.
143
-
-**Subworkflows** are two or more modules that are packaged together as a mini workflow.
157
+
Instead of having one large monolithic pipeline script, it's broken up into smaller script components, namely, modules and subworkflows:
158
+
159
+
-**Modules:** Wrappers around a single process
160
+
-**Subworkflows:** Two or more modules that are packaged together as a mini workflow
Within your pipeline repository, `modules` and `subworkflows` are stored within `local` and `nf-core` folders. The `nf-core` folder is for components that have come from the online nf-core repository while the `local` folder is for components that have been developed independently.
166
+
Within your pipeline repository, `modules` and `subworkflows` are stored within `local` and `nf-core` folders. The `nf-core` folder is for components that have come from the nf-core GitHub repository while the `local` folder is for components that have been developed independently:
150
167
151
-
```
168
+
```console
152
169
modules/
153
170
├── local
154
171
│ └── <toolname>
155
172
│ │ └── main.nf
156
173
│ .
157
174
│
158
175
└── nf-core
159
-
├── <toolname>
176
+
├── <tool name>
160
177
│ ├── environment.yml
161
178
│ ├── main.nf
162
179
│ ├── meta.yml
@@ -167,7 +184,28 @@ modules/
167
184
.
168
185
```
169
186
170
-
Modules from nf-core follow the same structure and contain a small number of additional files that are used for testing using [nf-test](https://www.nf-test.com/) and documentation about the module.
187
+
Modules from nf-core follow a similar same structure and contain a small number of additional files that are used for testing using [nf-test](https://www.nf-test.com/) and documentation about the module.
188
+
189
+
!!!note
190
+
191
+
Some nf-core modules are also split into command specific directories:
192
+
193
+
```console
194
+
│
195
+
└── <tool name>
196
+
└── <command>
197
+
├── environment.yml
198
+
├── main.nf
199
+
├── meta.yml
200
+
└── tests
201
+
├── main.nf.test
202
+
├── main.nf.test.snap
203
+
└── tags.yml
204
+
```
205
+
206
+
!!!note
207
+
208
+
The nf-core template does not come with a local modules folder by default.
171
209
172
210
### Configuration files
173
211
@@ -177,21 +215,62 @@ In the template, the `nextflow.config` file is a central configuration file and
177
215
178
216
There are several configuration files that are stored in the `conf` folder and are added to the configuration by default or optionally as profiles:
179
217
180
-
-`base.config`: sensible defaults for pipeline resource requests.
181
-
-`igenomes.config`: configuration settings required to access the igenomes registry.
182
-
-`modules.config`: additional module directives and arguments.
183
-
-`test.config`: a profile to run the pipeline with minimal test data.
184
-
-`test_full.config`: a profile to run the pipeline with a full-sized test dataset.
218
+
-`base.config`: A 'blank slate' config file, appropriate for general use on most high performance compute environments.
219
+
-`igenomes.config`: Defines reference genomes using iGenome paths.
220
+
-`igenomes_ignored.config`: Empty genomes dictionary to use when igenomes is ignored
221
+
-`modules.config`: Additional module directives and arguments.
222
+
-`test.config`: A profile to run the pipeline with minimal test data.
223
+
-`test_full.config`: A profile to run the pipeline with a full-sized test dataset.
185
224
186
225
### `.nf-core.yml`
187
226
188
227
The `.nf-core.yml` file is used to specify the repository type and manage linting tests.
By default, the `.nf-core.yml` file will only show the repository is a pipeline. However, if the template is customized and parts of the template are removed, this file needs to be modified for linting tests to pass.
271
+
!!!note
272
+
273
+
The `.nf-core.yml` file must match your template features for linting tests to pass.
195
274
196
275
### `nextflow_schema.json`
197
276
@@ -206,24 +285,26 @@ By default, the template comes with several automated tests that utilize GitHub
206
285
- `branch.yml`: Sets the branch protection for the nf-core repository
207
286
- `ci.yml`: Run small pipeline tests with the small test datasets
208
287
- `clean-up.yml`: Automated testing for stale and closed GitHub issues and PRs in the nf-core repo
209
-
- `download_pipeline.yml`: Test a pipeline download with `nf-core download`.
288
+
- `download_pipeline.yml`: Test a pipeline download with `nf-core pipelines download`.
210
289
- `fix-linting.yml`: Fix linting by adding a comment to a PR
211
290
- `linting_comment.yml`: Triggered after the linting action and posts an automated comment to the PR, even if the PR is coming from a fork
212
-
- `linting.yml`: Triggered on pushes and PRs to the repository and runs `nf-core lint` and markdown lint tests to ensure that the code meets the nf-core guidelines
291
+
- `linting.yml`: Triggered on pushes and PRs to the repository and runs `nf-core pipelines lint` and markdown lint tests to ensure that the code meets the nf-core guidelines
213
292
- `release-announcements.yml`: Automatic release toot and tweet announcements for nf-core pipeline releases
214
293
215
-
Notably, many of these tests are only configured for the nf-core repo. However, they can be modified for your repository or ignored if they are superfluous to your requirements.
294
+
Many of these tests are only configured for the nf-core repo. However, they can be modified for your repository or ignored if they are superfluous to your requirements.
216
295
217
-
You can read more about creating and modifying workflows on the [GitHub Actions documentation webpage](https://docs.github.com/en/actions).
296
+
Read more about creating and modifying workflows on the [GitHub Actions documentation webpage](https://docs.github.com/en/actions).
218
297
219
-
Even though many of these action workflows are not relevant for private repositories, it is recommended to keep them in place to prevent `nf-core lint` from throwing errors.
298
+
<!---
220
299
221
300
!!! note
222
301
223
302
To enable these workflows you need to click `Enable Actions on this Repository` under the `Actions` tab in your GitHub repository.
224
303
225
304

226
305
306
+
--->
307
+
227
308
---
228
309
229
310
Congratulations! You have now created a template pipeline, pushed it to Github and learned about important template files!
0 commit comments