Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New multi-course structure for training materials #486

Draft
wants to merge 37 commits into
base: master
Choose a base branch
from

Conversation

vdauwera
Copy link
Collaborator

First step toward evolving Hello Nextflow to be more modular. Just content moves and stub creation (not updated content yet except some rough chopping where bits are getting split up).

First step toward evolving Hello Nextflow to be more modular. Just content moves and stub creation (not updated content yet except some rough chopping where bits are getting split up).
Copy link

netlify bot commented Dec 16, 2024

Deploy Preview for nextflow-training ready!

Name Link
🔨 Latest commit 24c0234
🔍 Latest deploy log https://app.netlify.com/sites/nextflow-training/deploys/678fabc1758ef70008b1b96e
😎 Deploy Preview https://deploy-preview-486--nextflow-training.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@vdauwera vdauwera self-assigned this Jan 2, 2025
A few TODOs remaining, mainly updating console outputs etc
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved
docs/hello_nextflow/02_hello_channels.md Outdated Show resolved Hide resolved

---

## 4. Supply a batch of multiple values via the `params` system
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would this not be a good place to stop, and have a subsequent (possibly quite short) 'hello operators', using flatten and splitCsv as exemplars?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed in slack, I'll add some more explicit text calling out the importance of operators in section 4 and won't split anything out for now.


1. Making data flow from one process to the next
2. Collecting outputs from multiple process calls into a single process call
3. Passing more than one input through a channel
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We just did that in the previous module, right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean "Passing more than one input through a channel"? Here it's about having multiple 'tracks' in the input channel, eg the data but also some parameters etc., as a opposed to 'several pieces of the same kind of data'. In general this is a point of confusion for which we should try to develop a controlled vocabulary, because 'multiple inputs' ends up being ambiguous

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I actually realised what you meant further down. This probably needs to be something like 'passing collections of elements to a single task' or something similar.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you using 'collections of elements' in the same way I'm using 'input tracks in a channel'?

@@ -0,0 +1,755 @@
# Part 3: Hello Plumbing
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Part 3: Hello Plumbing
# Part 3: Hello Workflows

Maybe? We haven't really had a workflow so far, just a single step- this marks the point where we actually move beyond a single process into genuine worflows.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm totally open to changing the name. FWIW 'Plumbing' speaks to me because it feels directly evocative of what this one is about, ie specifically how do you connect the pipes. I worry that 'Workflows' is maybe a bit too generic; I see what you're going for but is that going to be obvious to a naive user? They might go "isn't it all about workflows?" Perhaps we can poll for opinions/suggestions.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was kind of conscious (kind of). I was thinking the first sentence could be along the lines "You thought you'd been thinking about workflows already, but real workflows do these things..."

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That works for when people are actually going through it, but will it make sense to someone who just takes a look at the table of contents? I'd like the titles to be as informative as possible.

docs/hello_nextflow/03_hello_plumbing.md Outdated Show resolved Hide resolved
docs/hello_nextflow/03_hello_plumbing.md Outdated Show resolved Hide resolved
docs/hello_nextflow/03_hello_plumbing.md Outdated Show resolved Hide resolved
docs/hello_nextflow/03_hello_plumbing.md Outdated Show resolved Hide resolved
docs/hello_nextflow/03_hello_plumbing.md Outdated Show resolved Hide resolved
docs/hello_nextflow/03_hello_plumbing.md Outdated Show resolved Hide resolved
}
```

This is what we can write based on what you've learned so far.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this really true? We already know about variable path inputs, and the syntax isn't different for multiple files.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well we don't know yet that the syntax isn't different. As a naive user, I'm like ok, I'm confident in all of this, but for this next bit I need to check if the syntax is the same or if i need to do something special.


### Takeaway

You know how to pass more than one input through a channel.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You know how to pass more than one input through a channel.
You know how to pass collected inputs through a channel.

To dissambuguate from the earlier examples with multiple items.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find this more ambiguous though; this reads like it's about the collected greetings, but it's not; it's about that parameter that constitutes an extra 'track' in the input channel. This is exactly what I was talking about in my other comment just now; the ways we talk about multiple inputs is inconsistent and confusing.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me 'passing more than one input through a channel' covers both things- you're doing it in both cases. The difference here is that we're passing multiple inputs to a single task (a task being a single iteration of a process).

Copy link
Collaborator Author

@vdauwera vdauwera Jan 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But that's not what this specific line is about; that's not the takeaway. The takeaway from this specific section is that we now know that if the process expects path foo and val bar, i have to write the process call as myProcess(foo, bar). Before this, all I knew to do was myProcess(foo). It doesn't have anything to do with the fact that we're giving myProcess all the foos (that was the previous section).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, apologies for the quick comment, I conflated issues while multitasking and I've re-read.

In fact, the point of this section (section 3) is that we've added a second input to the process, and filled that from a new parameter, right? So both of our versions are wrong. It's nothing to do with multiple inputs through 'a' channel (in fact there are now 2 channels, though one is implicit).

Maybe something like:

You know how to add more than one input channel to a process, and use both inputs from the workflow

vdauwera and others added 7 commits January 15, 2025 08:53
Text improvements

Co-authored-by: Jonathan Manning <[email protected]>
A few updates left but this is almost complete
After reconsidering the review comments, realized that it is ok and actually better to introduce variable inputs and params in Hello World. Getting them out of the way before Channels is actually helpful. The trick is to not get bogged down in details about value versus queue channels. The rest is a bit streamlined as a results. Also made Operators intro more explicit.

Also got started on some cleanup of the code files
- Space after view  {...}
- Config tweaks
- demo to test profile
- param json before profiles
- Also renamed Run Nextflow to Nextflow Run
vdauwera and others added 12 commits January 20, 2025 20:41
remove example where we ask participants to executing a run that we know will fail.
…lo-nextflow' into gvda-streamline-hello-nextflow
Managed to get map() in there after all! Thanks Rob for the feedback that got me there
Required some adaptations to config
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants