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
Picard: directly support Sentieon #2110
Conversation
x-ref after discussion: #2152 |
Needs a special changelog entry warning Senteion users about changes:
|
0c51184
to
86c360b
Compare
@ewels would be great if you can take another look. I'd love to merge it before completing the ruff linting refactoring! |
Feedback on the Slack thread in nf-core has been positive, so I think we're ok on that front 👍🏻 I'll have a quick look / play now. |
In testing, I was looking for the Senteion sample Uncaught TypeError: s.replace is not a function
at Object.format (multiqc_report.html:1562:8475)
at buildCache (multiqc_report.html:1561:2774)
at HTMLTableElement.<anonymous> (multiqc_report.html:1562:5250)
at Function.each (multiqc_report.html:1075:2815)
at r.fn.init.each (multiqc_report.html:1075:1003)
at r.fn.init.construct [as tablesorter] (multiqc_report.html:1562:4923)
at HTMLDocument.<anonymous> (multiqc_report.html:1758:21)
at j (multiqc_report.html:1075:29948)
at k (multiqc_report.html:1075:30262) Need to stop now, but are you able to replicate @vladsavelyev ? This is in a report generated from the |
(in |
Regarding the java script error - that's coming from a change in the previous PR. Fixed it now: b88eb1b |
So flicking between old / new reports before / after this PR, there is some discrepancies:
|
Fixed that, thanks!
There are two types of IlluminaLaneMetrics outputs, reporting different metrics:
and
After refactoring, one started to override another one (like we normally do for duplicated samples). I modified back to updating dicts instead of overwriting for this sort of reports.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, happy with the two minor bug fixes 👍🏻
Let's merge, then see if anyone complains 😬
Thanks for the major refactoring work here!
Sentieon internally uses Picard tools to generate metrics. However, it adds a slightly different header into the outputs. Compare Picard's
CollectGcBiasMetrics
output:And Sentieon's
--algo GCBias
output:The module for Sentieon was implemented completely independent from Picard, however, the actual module code was copied from Picard almost identically (apart from treating the headers and extracting the sample name). It led to some overtime discrepancy, when Picard was updated, whereas Sentieon wasn't (e.g.).
Decoupling module dependencies is a great idea in general, but in my opinion that makes sense when modules exist for different tools, even if very similar. But because Sentieon literally uses the very same Picard tools, I think the code should always stay in sync, so I think it makes sense for the Sentieon module to just import the Picard module code. We already do a similar thing for Bracken that just imports Kraken.
Adds support for all Picard-compatible Sentieon QC outputs, fixes:
UPD:
It makes sense to remove the Sentieon MultiQC module completely, and adjust Picard to support both header formats. This way, MultiQC won't break up the general stats table into two columns, and all the plots sections as well:
TODO:
picard.py
.