-
Notifications
You must be signed in to change notification settings - Fork 192
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
Update of nf-core/modules file structure #1159
Comments
Yup, exactly! 👍🏻 And that we want to add to |
I'm all for adding that information to
|
I agree (I think we all do) that two versions in the same pipeline is quite an edge case. And personally I'm also not sure whether we need to support that at all costs as one could also just make a local module or copy it manually, as Gregor said. For the rest of the file path though, this is to make the modules tool suite more compatible with external package repositories (I'm thinking a bit like conda channels), and this could be quite a nice think to have down the line. The import paths get more clunky, yep. The SHA sum is actually the most annoying part of this in my opinion, as you will definitely have to copy that one. So I think if we wouldn't have that, it would be fine/okay. Absolutely agree on the readability. When I started with DSL2, I was completely lost, and I liked DSL1 pipelines much more in terms of readability. The |
I like that idea, and you can still have that, the module just needs to have a unique name across repos/"channels". Actually, this is also how it works with conda.
I absolutely agree that overall, maintainability strongly benefits from DSL2. We should strive for some balance between readability <-> generalization, though. Maybe it's worth discussing in slack or in a separate issue if and how we can improve readability in general. |
The "multiple versions of the same module" thing got in because a few people fought for it fairly hard in Slack a few times. But I suspect mostly due to thinking about edge cases rather than a lot of direct need. I hadn't really thought about the fact that older versions could be managed by copying in as a local module if needed. I'm happy with that solution. So yeah, I'm fine with dropping the git sha from the file path 👍🏻 @grst to clarify - the first part of the path is actually the repo name. So without the git sha it becomes:
in other words (subtool not always needed):
I don't think that I want to shorten it any more than this really. I suspect that modules with duplicate names will be pretty common, as people develop in their own modules repo before shipping to nf-core for example. I also think that having |
Agree with keeping the path as intuitive as possible when installing and importing in workflows. I somehow overlooked the latter during the frantic discussions yesterday but thank you for being the voice of reason here @grst ! In terms of simplicity, I am not sure we can do much more to make DSL2 pipelines as readable as possible. I think we have now found an obvious and standardised home for all of these different components i.e. modules, subworkflows, workflows both local and from nf-core. Findability was also one of my sticking points with DSL2 compared to DSL1 but we would always have to compromise on this for the flexibility we gain. |
I agree with @grst that having the benefit of the modularity of DSL2 has a slightly negative impact on readability. Would it be helpful to have a figure showing the tree structure diagrammatically and annotating it with the location of key DSL2 features - modules, workflows etc? |
I wouldn't mind having a go working with @drpatelh to make sure the info is accurate |
I think a figure would be great! But that's actually a bit hard to find and I don't think many people read this. With nf-core pipelines getting gradually more complex I really think better documentation about all the bits and pieces that make up these pipelines now would be very valuable to newcomers. |
Okay the changes have been made to
Other things
|
Okay closing this issue as the refactoring has been done both in |
As discussed on Slack downstream of here: https://nfcore.slack.com/archives/CE5LG7WMB/p1625484224149900
We want to update the file structure of nf-core/modules and modules in pipelines to better work with external module repositories and to allow for multiple versions of the same tool being installed in a nf-core pipeline.
nf-core/modules
For nf-core/modules, the structure should change to
modules/tool/subtool
So essentially replacing
software
withmodules
.Custom tools, that are not bioinformatic software, will be blaced in the folder
modules/custom/mycustomtool
nf-core pipelines
For pipelines, the structure will change into:
nf-core/rnaseq/modules/nf-core/modules/bedtools/intersect/short_sha/
So that every module is stored with the
short_sha
, which allows users to have the same modules twice, with different sha sums (i.e. versions).Modules from external repos can then be installed into:
nf-core/rnaseq/modules/username/reponame/external_tool/external_subtool/short_sha
The text was updated successfully, but these errors were encountered: