I think a methods paper on RustQC and its validation would really help with academic adoption.
That may be a tall order .. specially for an AI assisted rewrite of existing tools that have been published on their own already.
I know I would have a hard time convincing my PI to adopt something that is not yet published, even if the technical case looks strong.
Tools like FastQC and bwa mem have no formal publications associated with them. They are still widely used and are accepted to be the "(one of) best" for their respective applications.
Who is going to take care of porting updates/bug fixes that happen in the original software. Would there be regular updated releases of
RustQCto keep up with those changes?It may become a headache to figure out which version of a specific program was used in the analyses people publish without digging through
RustQCrelease notes. Is there a file that lists this information for each release ofRustQC.Great points! The intention is that I'll keep maintaining it and updating it (plus any other contributors). I've pinned the exact versions in the docs already but you're right, it might be smart to have these bundled in release notes or something as they change over time.
I'd like to look into how we can pass this info through to reporting / final results too. For example, it could be in an output file saved by RustQC at run time. And maybe I can be clever with how outputs are versioned in MultiQC reports? "Produced by RustQC v0.1.2, based on outputs from Qualimap v2.3" or something.
Open to suggestions on how to do this well! This would be a good topic for rewrites.bio as well.
It would be foolproof to store such text in a file in output folder(s). You could also request users to add that information in their methods section, if they cite
RustQC. If there are any plots, then the text could be embedded as a footnote.Would it be possible to allow users to select the tools to run on the command line as optional arguments? If no argument is provided that means run all tools.
Made an issue about the output file with versions: https://github.com/seqeralabs/RustQC/issues/75
There are a few
--skip-xCLI flags already to omit certain parts of the RustQC analysis. I think that everything can be toggled on and off via the config file. Could probably expand the CLI to have toggles for each tool if that'd be useful.Perhaps adding
--skip app1,app2option may be more versatile. On clusters (whereRustQCmay be installed as a module) the config may not be editable by normal users, unless it is read from local directory/user's$HOME.This work (along with edgePython, etc) have generated a lot of internal discussion. https://rewrites.bio/ spurred some passionate debate, particularly the 3.1 "think big" point, which was generally felt to encourage "shortcuts" rather than holistic ports that are more easily maintained and/or rolled in upstream in the original implementation. This relates to some degree to what GenoMax mentions in regard to cherry-picking functionality and general maintenance/provenance concerns.
We agreed it'd be better to avoid combinatorial merging of features, keeping a port a full reimplementation (perhaps with optional streamlining capabilities), and then building any additional tooling as a separate entity on top as needed. E.g., rewrites of dupRadar, featureCounts, etc, with RustQC then using those ports as it pleases. This would generally simplify maintenance and be more broadly useful in our opinion, though we recognize this is more work and a less direct route to the ultimate goal in this case. That said, we feel the rewrites.bio guidelines should consider reflecting a more holistic approach like that for the good of the community at large.
Hi jared.andrews07, apologies for the delay - biostars email went to spam.
I understand where you're coming from and have thought about this approach myself quite a bit, but I don't entirely agree. There are a few points to this:
For me, the key to this is understanding that there are different types of rewrites (and this is something I intend to update rewrites.bio with when I get a moment). RustQC was a combinatorial rewrite - it made sense that way for those tools and that usage. The same will not be true for all tools.
Phil
Fair points. Perhaps semantics, but this point:
is really key and perhaps indicates being more explicit that it's a reimplementation of specific functionality from various packages rather than a true re-write of said packages may be more accurate. But again, semantics.
From our internal discussions, one of our main concerns was a proliferation of effectively unmaintained re-writes cherry picking functionality to replace key components of whatever the author(s) cared about. So instead of one performant implementation of a tool offering all functionality, you get a half dozen cobbled together toolkits designed for effectiveness in very specific contexts. I am not sure this is something to really encourage generally. RustQC is an interesting case given how heavily the nf-core pipelines are used and how much of a difference the re-write makes. I don't know where one would really want to line drawn, per se.
I recognize the work involved, and the point in the quote is an important one in terms of performance. Motivation and context for the re-write is pretty key.
I think I also just disagree a bit, but that's okay.