From fbaae14f5e61d062037887f49491f9a7a1533594 Mon Sep 17 00:00:00 2001 From: SunPast Date: Sun, 9 Nov 2025 22:46:11 +0800 Subject: [PATCH 1/7] add strelka --- NEWS.md | 2 ++ R/cmd-strelka.R | 37 +++++++++++++++++++++++++++++++++++++ tests/testthat/test-exec.R | 5 +++++ 3 files changed, 44 insertions(+) create mode 100644 R/cmd-strelka.R diff --git a/NEWS.md b/NEWS.md index 98a6c28..6d45bde 100644 --- a/NEWS.md +++ b/NEWS.md @@ -16,6 +16,8 @@ * new command `bedtools` +* new command `strelka` + # blit 0.2.0 ## New features diff --git a/R/cmd-strelka.R b/R/cmd-strelka.R new file mode 100644 index 0000000..7e37327 --- /dev/null +++ b/R/cmd-strelka.R @@ -0,0 +1,37 @@ +#' Strelka is a fast and accurate small variant caller optimized for analysis of germline variation +#' in small cohorts and somatic variation in tumor/normal sample pairs. +#' +#' @param script Name of the Strelka script. One of +#' `r oxford_comma(code_quote(StrelkaScripts))`. +#' @param ... `r rd_dots("strelka")`. +#' @inheritParams python +#' @seealso +#' - +#' +#' `r rd_seealso()` +#' @inherit exec return +#' @family command +#' @export +strelka <- make_command( + "strelka", + function(script, ..., python = NULL) { + script <- rlang::arg_match0(script, StrelkaScripts) + Strelka$new(cmd = python, ..., script = script) + } +) + +Strelka <- R6Class( + "Strelka", + inherit = Python, + private = list( + combine_params = function(script) { + script <- pkg_extdata("Strelka", paste0(script, ".py")) + file_executable(script) + c(script, super$combine_params()) + } + ) +) + +StrelkaScripts <- c( + "configureStrelkaGermlineWorkflow", "configureStrelkaSomaticWorkflow","runWorkflow" +) \ No newline at end of file diff --git a/tests/testthat/test-exec.R b/tests/testthat/test-exec.R index e325bef..61be657 100644 --- a/tests/testthat/test-exec.R +++ b/tests/testthat/test-exec.R @@ -130,3 +130,8 @@ testthat::test_that("`bowtie2()` works as expected", { testthat::skip_if_not(nzchar(Sys.which("bowtie2"))) bowtie2() |> cmd_help() }) + +testthat::test_that("`strelka()` works as expected", { + testthat::skip_if_not(nzchar(Sys.which("strelka"))) + strelka() |> cmd_help() +}) From c0674fe1a612421a655d1bceb1529ecaa02cbdfb Mon Sep 17 00:00:00 2001 From: SunPast Date: Sat, 15 Nov 2025 16:32:56 +0800 Subject: [PATCH 2/7] modify strelka --- DESCRIPTION | 2 +- NAMESPACE | 1 + R/cmd-strelka.R | 27 ++- .../configureStrelkaGermlineWorkflow.py | 189 ++++++++++++++++++ .../configureStrelkaSomaticWorkflow.py | 161 +++++++++++++++ man/allele_counter.Rd | 1 + man/bcftools.Rd | 1 + man/bedtools.Rd | 1 + man/bowtie2.Rd | 1 + man/bwa.Rd | 1 + man/cellranger.Rd | 1 + man/conda.Rd | 1 + man/exec.Rd | 1 + man/fastp.Rd | 1 + man/fastq_pair.Rd | 1 + man/gistic2.Rd | 1 + man/kraken2.Rd | 1 + man/kraken_tools.Rd | 1 + man/perl.Rd | 1 + man/pyscenic.Rd | 1 + man/python.Rd | 1 + man/samtools.Rd | 1 + man/seqkit.Rd | 1 + man/snpEff.Rd | 1 + man/strelka.Rd | 54 +++++ man/trust4.Rd | 1 + man/varscan.Rd | 1 + 27 files changed, 445 insertions(+), 10 deletions(-) create mode 100755 inst/extdata/strelka/configureStrelkaGermlineWorkflow.py create mode 100755 inst/extdata/strelka/configureStrelkaSomaticWorkflow.py create mode 100644 man/strelka.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 7845aa6..68996bb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -34,6 +34,6 @@ Suggests: Config/testthat/edition: 3 Encoding: UTF-8 Roxygen: list(markdown = TRUE) -RoxygenNote: 7.3.2 +RoxygenNote: 7.3.3 URL: https://github.com/WangLabCSU/blit, https://wanglabcsu.github.io/blit/ BugReports: https://github.com/WangLabCSU/blit/issues diff --git a/NAMESPACE b/NAMESPACE index d72f6da..9700190 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -41,6 +41,7 @@ export(python) export(samtools) export(seqkit) export(snpEff) +export(strelka) export(trust4) export(trust4_gene_names) export(trust4_imgt_annot) diff --git a/R/cmd-strelka.R b/R/cmd-strelka.R index 7e37327..e1c17bf 100644 --- a/R/cmd-strelka.R +++ b/R/cmd-strelka.R @@ -14,24 +14,33 @@ #' @export strelka <- make_command( "strelka", - function(script, ..., python = NULL) { + function(script, ...) { script <- rlang::arg_match0(script, StrelkaScripts) - Strelka$new(cmd = python, ..., script = script) + Strelka$new(script = script, ...) } ) -Strelka <- R6Class( +Strelka <- R6::R6Class( "Strelka", - inherit = Python, + inherit = Command, private = list( - combine_params = function(script) { - script <- pkg_extdata("Strelka", paste0(script, ".py")) - file_executable(script) - c(script, super$combine_params()) + alias = function() "strelka", + command_locate = function() { + py2 <- Sys.which("python2") + if (py2 == "") { + stop("Cannot locate python2. Please install it or activate a Conda environment with Python2.") + } + py2 + }, + setup_help_params = function() "--help", + setup_command_params = function(script) { + script_path <- pkg_extdata("strelka", paste0(script, ".py")) + file_executable(script_path) + c(script_path, super$combine_params()) } ) ) StrelkaScripts <- c( - "configureStrelkaGermlineWorkflow", "configureStrelkaSomaticWorkflow","runWorkflow" + "configureStrelkaGermlineWorkflow", "configureStrelkaSomaticWorkflow", "runWorkflow" ) \ No newline at end of file diff --git a/inst/extdata/strelka/configureStrelkaGermlineWorkflow.py b/inst/extdata/strelka/configureStrelkaGermlineWorkflow.py new file mode 100755 index 0000000..ef2f5af --- /dev/null +++ b/inst/extdata/strelka/configureStrelkaGermlineWorkflow.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python2 +# +# Strelka - Small Variant Caller +# Copyright (c) 2009-2018 Illumina, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# + +""" +This script configures the strelka germline small variant calling workflow +""" + +import os,sys + +if sys.version_info >= (3,0): + import platform + raise Exception("Strelka does not currently support python3 (version %s detected)" % (platform.python_version())) + +if sys.version_info < (2,6): + import platform + raise Exception("Strelka requires python2 version 2.6+ (version %s detected)" % (platform.python_version())) + + +scriptDir='/home/dingjia/.local/share/R/blit/appmamba/envs/strelka/share/strelka-2.9.10-2/bin' +scriptName=os.path.basename(__file__) +workflowDir='/home/dingjia/.local/share/R/blit/appmamba/envs/strelka/share/strelka-2.9.10-2/lib/python' + +sys.path.append(workflowDir) + +from configBuildTimeInfo import workflowVersion +from strelkaSharedOptions import StrelkaSharedWorkflowOptionsBase +from configureUtil import BamSetChecker, groomBamList, joinFile, OptParseException, checkFixTabixIndexedFileOption +from makeRunScript import makeRunScript +from strelkaGermlineWorkflow import StrelkaGermlineWorkflow +from workflowUtil import ensureDir, exeFile + + + +class StrelkaGermlineWorkflowOptions(StrelkaSharedWorkflowOptionsBase) : + + def workflowDescription(self) : + return """Version: %s + +This script configures Strelka germline small variant calling. +You must specify an alignment file (BAM or CRAM) for at least one sample. +""" % (workflowVersion) + + + def addWorkflowGroupOptions(self,group) : + group.add_option("--bam", type="string",dest="bamList",metavar="FILE", action="append", + help="Sample BAM or CRAM file. May be specified more than once, multiple inputs will be treated as each BAM file representing a different sample. [required] (no default)") + group.add_option("--ploidy", type="string", dest="ploidyFilename", metavar="FILE", + help="Provide ploidy file in VCF. The VCF should include one sample column per input sample labeled with the same sample names found in the input BAM/CRAM RG header sections." + " Ploidy should be provided in records using the FORMAT/CN field, which are interpreted to span the range [POS+1, INFO/END]. Any CN value besides 1 or 0 will be treated as 2." + " File must be tabix indexed. (no default)") + group.add_option("--noCompress", type="string", dest="noCompressBed", metavar="FILE", + help="Provide BED file of regions where gVCF block compression is not allowed. File must be bgzip-compressed/tabix-indexed. (no default)") + group.add_option("--callContinuousVf", type="string", dest="callContinuousVf", metavar="CHROM", action="append", + help="Call variants on CHROM without a ploidy prior assumption, issuing calls with continuous variant frequencies (no default)") + group.add_option("--rna", dest="isRNA", action="store_true", + help="Set options for RNA-Seq input.") + + StrelkaSharedWorkflowOptionsBase.addWorkflowGroupOptions(self,group) + + + def addExtendedGroupOptions(self,group) : + # note undocumented library behavior: "dest" is optional, but not including it here will + # cause the hidden option to always print + group.add_option("--disableSequenceErrorEstimation", dest="isEstimateSequenceError", action="store_false", + help="Disable estimation of sequence error rates from data.") + group.add_option("--useAllDataForSequenceErrorEstimation", dest="isErrorEstimationFromAllData", action="store_true", + help="Instead of sampling a subset of data for error estimation, use all data from sufficiently large chromosomes." + " This could greatly increase the workflow's runtime.") + + StrelkaSharedWorkflowOptionsBase.addExtendedGroupOptions(self,group) + + + def getOptionDefaults(self) : + + self.configScriptDir=scriptDir + defaults=StrelkaSharedWorkflowOptionsBase.getOptionDefaults(self) + + libexecDir=defaults["libexecDir"] + + configDir=os.path.abspath(os.path.join(scriptDir,"../share/config")) + assert os.path.isdir(configDir) + + defaults.update({ + 'runDir' : 'StrelkaGermlineWorkflow', + 'strelkaGermlineBin' : joinFile(libexecDir,exeFile("starling2")), + 'bgzip9Bin' : joinFile(libexecDir, exeFile("bgzip9")), + 'configDir' : configDir, + 'germlineSnvScoringModelFile' : joinFile(configDir,'germlineSNVScoringModels.json'), + 'germlineIndelScoringModelFile' : joinFile(configDir,'germlineIndelScoringModels.json'), + 'rnaSnvScoringModelFile' : joinFile(configDir,'RNASNVScoringModels.json'), + 'rnaIndelScoringModelFile' : joinFile(configDir,'RNAIndelScoringModels.json'), + 'callContinuousVf' : [], + 'getCountsBin' : joinFile(libexecDir,exeFile("GetSequenceAlleleCounts")), + 'mergeCountsBin' : joinFile(libexecDir,exeFile("MergeSequenceAlleleCounts")), + 'estimateVariantErrorRatesBin' : joinFile(libexecDir,exeFile("EstimateVariantErrorRates")), + 'thetaParamFile' : joinFile(configDir,'theta.json'), + 'indelErrorRateDefault' : joinFile(configDir,'indelErrorModel.json'), + 'isEstimateSequenceError' : True, + 'isErrorEstimationFromAllData' : False + }) + return defaults + + + def validateAndSanitizeOptions(self,options) : + + StrelkaSharedWorkflowOptionsBase.validateAndSanitizeOptions(self,options) + + options.ploidyFilename = checkFixTabixIndexedFileOption(options.ploidyFilename,"ploidy file") + options.noCompressBed = checkFixTabixIndexedFileOption(options.noCompressBed,"no-compress bed") + if options.snvScoringModelFile is None : + if options.isRNA : + options.snvScoringModelFile = options.rnaSnvScoringModelFile + else : + options.snvScoringModelFile = options.germlineSnvScoringModelFile + + if options.indelScoringModelFile is None : + if options.isRNA : + options.indelScoringModelFile = options.rnaIndelScoringModelFile + else : + options.indelScoringModelFile = options.germlineIndelScoringModelFile + + # Disable dynamic error estimation for Exome + if options.isExome : + options.isEstimateSequenceError = False + + # Disable dynamic error estimation for RNA + if options.isRNA : + options.isEstimateSequenceError = False + + groomBamList(options.bamList,"input") + + def safeLen(x) : + if x is None : return 0 + return len(x) + + if safeLen(options.bamList) == 0 : + raise OptParseException("No input sample alignment files specified") + + bamSetChecker = BamSetChecker() + bamSetChecker.appendBams(options.bamList,"Input") + bamSetChecker.check(options.htsfileBin, options.referenceFasta) + + + +def main() : + + primarySectionName="StrelkaGermline" + options,iniSections=StrelkaGermlineWorkflowOptions().getRunOptions(primarySectionName, version=workflowVersion) + + # we don't need to instantiate the workflow object during configuration, + # but this is done here to trigger additional parameter validation: + # + StrelkaGermlineWorkflow(options) + + # generate runscript: + # + ensureDir(options.runDir) + workflowScriptPath = os.path.join(options.runDir, options.workflowScriptName) + + makeRunScript(workflowScriptPath,os.path.join(workflowDir,"strelkaGermlineWorkflow.py"),"StrelkaGermlineWorkflow",primarySectionName,iniSections) + + notefp=sys.stdout + notefp.write(""" +Successfully created workflow run script. +To execute the workflow, run the following script and set appropriate options: + +%s +""" % (workflowScriptPath)) + + +if __name__ == "__main__" : + main() diff --git a/inst/extdata/strelka/configureStrelkaSomaticWorkflow.py b/inst/extdata/strelka/configureStrelkaSomaticWorkflow.py new file mode 100755 index 0000000..a5634fe --- /dev/null +++ b/inst/extdata/strelka/configureStrelkaSomaticWorkflow.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python2 +# +# Strelka - Small Variant Caller +# Copyright (c) 2009-2018 Illumina, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# + +""" +This script configures the Strelka somatic small variant calling workflow +""" + +import os,sys + +if sys.version_info >= (3,0): + import platform + raise Exception("Strelka does not currently support python3 (version %s detected)" % (platform.python_version())) + +if sys.version_info < (2,6): + import platform + raise Exception("Strelka requires python2 version 2.6+ (version %s detected)" % (platform.python_version())) + + +scriptDir='/home/dingjia/.local/share/R/blit/appmamba/envs/strelka/share/strelka-2.9.10-2/bin' +scriptName=os.path.basename(__file__) +workflowDir='/home/dingjia/.local/share/R/blit/appmamba/envs/strelka/share/strelka-2.9.10-2/lib/python' +templateConfigDir=os.path.abspath(os.path.join(scriptDir,'../share/config')) + +sys.path.append(workflowDir) + +from configBuildTimeInfo import workflowVersion +from strelkaSharedOptions import StrelkaSharedWorkflowOptionsBase +from configureUtil import BamSetChecker, groomBamList, OptParseException, joinFile, \ + checkFixTabixListOption, validateFixExistingFileArg +from makeRunScript import makeRunScript +from strelkaSomaticWorkflow import StrelkaSomaticWorkflow +from workflowUtil import ensureDir, exeFile + + + +class StrelkaSomaticWorkflowOptions(StrelkaSharedWorkflowOptionsBase) : + + def workflowDescription(self) : + return """Version: %s + +This script configures Strelka somatic small variant calling. +You must specify an alignment file (BAM or CRAM) for each sample of a matched tumor-normal pair. +""" % (workflowVersion) + + + def addWorkflowGroupOptions(self,group) : + group.add_option("--normalBam", type="string",dest="normalBamList",metavar="FILE", action="append", + help="Normal sample BAM or CRAM file. (no default)") + group.add_option("--tumorBam","--tumourBam", type="string",dest="tumorBamList",metavar="FILE", action="append", + help="Tumor sample BAM or CRAM file. [required] (no default)") + group.add_option("--outputCallableRegions", dest="isOutputCallableRegions", action="store_true", + help="Output a bed file describing somatic callable regions of the genome") + + StrelkaSharedWorkflowOptionsBase.addWorkflowGroupOptions(self,group) + + + def addExtendedGroupOptions(self,group) : + group.add_option("--noiseVcf", type="string",dest="noiseVcfList",metavar="FILE", action="append", + help="Noise vcf file (submit argument multiple times for more than one file)") + + StrelkaSharedWorkflowOptionsBase.addExtendedGroupOptions(self,group) + + + def getOptionDefaults(self) : + + self.configScriptDir=scriptDir + defaults=StrelkaSharedWorkflowOptionsBase.getOptionDefaults(self) + + libexecDir=defaults["libexecDir"] + + configDir=os.path.abspath(os.path.join(scriptDir,"../share/config")) + assert os.path.isdir(configDir) + + defaults.update({ + 'runDir' : 'StrelkaSomaticWorkflow', + 'strelkaSomaticBin' : joinFile(libexecDir,exeFile("strelka2")), + 'minTier2Mapq' : 0, + 'snvScoringModelFile' : joinFile(configDir,'somaticSNVScoringModels.json'), + 'indelScoringModelFile' : joinFile(configDir,'somaticIndelScoringModels.json'), + 'isOutputCallableRegions' : False, + 'noiseVcfList' : None + }) + return defaults + + + def validateAndSanitizeOptions(self,options) : + + StrelkaSharedWorkflowOptionsBase.validateAndSanitizeOptions(self,options) + + checkFixTabixListOption(options.noiseVcfList,"noise vcf") + + groomBamList(options.normalBamList,"normal sample") + groomBamList(options.tumorBamList, "tumor sample") + + def checkRequired(bamList,label): + if (bamList is None) or (len(bamList) == 0) : + raise OptParseException("No %s sample BAM/CRAM files specified" % (label)) + + checkRequired(options.tumorBamList,"tumor") + + bamSetChecker = BamSetChecker() + + def singleAppender(bamList,label): + if bamList is None : return + if len(bamList) > 1 : + raise OptParseException("More than one %s sample BAM/CRAM files specified" % (label)) + bamSetChecker.appendBams(bamList,label) + + singleAppender(options.normalBamList,"normal") + singleAppender(options.tumorBamList,"tumor") + bamSetChecker.check(options.htsfileBin, + options.referenceFasta) + + + +def main() : + + primarySectionName="StrelkaSomatic" + options,iniSections=StrelkaSomaticWorkflowOptions().getRunOptions(primarySectionName, + version=workflowVersion) + + # we don't need to instantiate the workflow object during configuration, + # but this is done here to trigger additional parameter validation: + # + StrelkaSomaticWorkflow(options) + + # generate runscript: + # + ensureDir(options.runDir) + workflowScriptPath = os.path.join(options.runDir, options.workflowScriptName) + + makeRunScript(workflowScriptPath,os.path.join(workflowDir,"strelkaSomaticWorkflow.py"),"StrelkaSomaticWorkflow",primarySectionName,iniSections) + + notefp=sys.stdout + notefp.write(""" +Successfully created workflow run script. +To execute the workflow, run the following script and set appropriate options: + +%s +""" % (workflowScriptPath)) + + +if __name__ == "__main__" : + main() diff --git a/man/allele_counter.Rd b/man/allele_counter.Rd index 1d2fa45..773b3c8 100644 --- a/man/allele_counter.Rd +++ b/man/allele_counter.Rd @@ -60,6 +60,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/bcftools.Rd b/man/bcftools.Rd index fd249fb..213b908 100644 --- a/man/bcftools.Rd +++ b/man/bcftools.Rd @@ -50,6 +50,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/bedtools.Rd b/man/bedtools.Rd index e85eb08..fa9a7eb 100644 --- a/man/bedtools.Rd +++ b/man/bedtools.Rd @@ -47,6 +47,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/bowtie2.Rd b/man/bowtie2.Rd index a103f2d..fc1406d 100644 --- a/man/bowtie2.Rd +++ b/man/bowtie2.Rd @@ -56,6 +56,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/bwa.Rd b/man/bwa.Rd index 908161b..7a4e4cb 100644 --- a/man/bwa.Rd +++ b/man/bwa.Rd @@ -62,6 +62,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/cellranger.Rd b/man/cellranger.Rd index 8b51c7e..833e9bd 100644 --- a/man/cellranger.Rd +++ b/man/cellranger.Rd @@ -64,6 +64,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/conda.Rd b/man/conda.Rd index 6ca35db..f3ad07d 100644 --- a/man/conda.Rd +++ b/man/conda.Rd @@ -45,6 +45,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/exec.Rd b/man/exec.Rd index 32bc558..f5b734c 100644 --- a/man/exec.Rd +++ b/man/exec.Rd @@ -38,6 +38,7 @@ Invoke a System Command \item \code{\link[=samtools]{samtools()}} \item \code{\link[=seqkit]{seqkit()}} \item \code{\link[=snpEff]{snpEff()}} +\item \code{\link[=strelka]{strelka()}} \item \code{\link[=trust4]{trust4()}} \item \code{\link[=varscan]{varscan()}} } diff --git a/man/fastp.Rd b/man/fastp.Rd index 4546142..d4e0cd9 100644 --- a/man/fastp.Rd +++ b/man/fastp.Rd @@ -49,6 +49,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/fastq_pair.Rd b/man/fastq_pair.Rd index ebd9fbf..3eaa56e 100644 --- a/man/fastq_pair.Rd +++ b/man/fastq_pair.Rd @@ -70,6 +70,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/gistic2.Rd b/man/gistic2.Rd index a1f8c0f..d5cc193 100644 --- a/man/gistic2.Rd +++ b/man/gistic2.Rd @@ -67,6 +67,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/kraken2.Rd b/man/kraken2.Rd index c67271a..ab49fa9 100644 --- a/man/kraken2.Rd +++ b/man/kraken2.Rd @@ -73,6 +73,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/kraken_tools.Rd b/man/kraken_tools.Rd index 813ad80..b299d4f 100644 --- a/man/kraken_tools.Rd +++ b/man/kraken_tools.Rd @@ -49,6 +49,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/perl.Rd b/man/perl.Rd index 0b5d27a..ef09bf9 100644 --- a/man/perl.Rd +++ b/man/perl.Rd @@ -46,6 +46,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/pyscenic.Rd b/man/pyscenic.Rd index 5fa2b6a..a5a4e87 100644 --- a/man/pyscenic.Rd +++ b/man/pyscenic.Rd @@ -46,6 +46,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/python.Rd b/man/python.Rd index b733052..b99ac82 100644 --- a/man/python.Rd +++ b/man/python.Rd @@ -46,6 +46,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/samtools.Rd b/man/samtools.Rd index 7a3d4a5..3d2fb4e 100644 --- a/man/samtools.Rd +++ b/man/samtools.Rd @@ -48,6 +48,7 @@ Other \code{commands}: \code{\link{python}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/seqkit.Rd b/man/seqkit.Rd index 5dff545..b53e72f 100644 --- a/man/seqkit.Rd +++ b/man/seqkit.Rd @@ -46,6 +46,7 @@ Other \code{commands}: \code{\link{python}()}, \code{\link{samtools}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/snpEff.Rd b/man/snpEff.Rd index c6fa9a1..0e6316e 100644 --- a/man/snpEff.Rd +++ b/man/snpEff.Rd @@ -48,6 +48,7 @@ Other \code{commands}: \code{\link{python}()}, \code{\link{samtools}()}, \code{\link{seqkit}()}, +\code{\link{strelka}()}, \code{\link{trust4}()}, \code{\link{varscan}()} } diff --git a/man/strelka.Rd b/man/strelka.Rd new file mode 100644 index 0000000..0384cf2 --- /dev/null +++ b/man/strelka.Rd @@ -0,0 +1,54 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/cmd-strelka.R +\name{strelka} +\alias{strelka} +\title{Strelka is a fast and accurate small variant caller optimized for analysis of germline variation +in small cohorts and somatic variation in tumor/normal sample pairs.} +\usage{ +strelka(script, ...) +} +\arguments{ +\item{script}{Name of the Strelka script. One of +\code{"configureStrelkaGermlineWorkflow"}, \code{"configureStrelkaSomaticWorkflow"}, and \code{"runWorkflow"}.} + +\item{...}{<\link[rlang:dyn-dots]{dynamic dots}> Additional arguments passed to \code{strelka} command. Empty arguments are automatically trimmed. If a single argument, such as a file path, contains spaces, it must be quoted, for example using \code{\link[=shQuote]{shQuote()}}. Details see: \code{cmd_help(strelka())}.} +} +\value{ +A \code{command} object. +} +\description{ +Strelka is a fast and accurate small variant caller optimized for analysis of germline variation +in small cohorts and somatic variation in tumor/normal sample pairs. +} +\seealso{ +\itemize{ +\item \url{https://github.com/Illumina/strelka} +\item \code{\link[=cmd_wd]{cmd_wd()}}/\code{\link[=cmd_envvar]{cmd_envvar()}}/\code{\link[=cmd_envpath]{cmd_envpath()}}/\code{\link[=cmd_condaenv]{cmd_condaenv()}} +\item \code{\link[=cmd_on_start]{cmd_on_start()}}/\code{\link[=cmd_on_exit]{cmd_on_exit()}} +\item \code{\link[=cmd_on_succeed]{cmd_on_succeed()}}/\code{\link[=cmd_on_fail]{cmd_on_fail()}} +\item \code{\link[=cmd_parallel]{cmd_parallel()}} +} + +Other \code{commands}: +\code{\link{allele_counter}()}, +\code{\link{bcftools}()}, +\code{\link{bedtools}()}, +\code{\link{bowtie2}()}, +\code{\link{bwa}()}, +\code{\link{cellranger}()}, +\code{\link{conda}()}, +\code{\link{fastp}()}, +\code{\link{fastq_pair}()}, +\code{\link{gistic2}()}, +\code{\link{kraken2}()}, +\code{\link{kraken_tools}()}, +\code{\link{perl}()}, +\code{\link{pyscenic}()}, +\code{\link{python}()}, +\code{\link{samtools}()}, +\code{\link{seqkit}()}, +\code{\link{snpEff}()}, +\code{\link{trust4}()}, +\code{\link{varscan}()} +} +\concept{command} diff --git a/man/trust4.Rd b/man/trust4.Rd index 3956a32..11f0d00 100644 --- a/man/trust4.Rd +++ b/man/trust4.Rd @@ -102,6 +102,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{varscan}()} } \concept{command} diff --git a/man/varscan.Rd b/man/varscan.Rd index 6c949eb..6e5fe9f 100644 --- a/man/varscan.Rd +++ b/man/varscan.Rd @@ -49,6 +49,7 @@ Other \code{commands}: \code{\link{samtools}()}, \code{\link{seqkit}()}, \code{\link{snpEff}()}, +\code{\link{strelka}()}, \code{\link{trust4}()} } \concept{command} From c6661ddb0f6a4632af7fae0811aca23103f3e08c Mon Sep 17 00:00:00 2001 From: SunPast Date: Sat, 15 Nov 2025 16:38:45 +0800 Subject: [PATCH 3/7] modify strelka --- R/cmd-strelka.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/R/cmd-strelka.R b/R/cmd-strelka.R index e1c17bf..b8bc393 100644 --- a/R/cmd-strelka.R +++ b/R/cmd-strelka.R @@ -29,8 +29,7 @@ Strelka <- R6::R6Class( py2 <- Sys.which("python2") if (py2 == "") { stop("Cannot locate python2. Please install it or activate a Conda environment with Python2.") - } - py2 + }else{py2} }, setup_help_params = function() "--help", setup_command_params = function(script) { From bfc638117f93df048dd2ff4ffc299b056ff10d7f Mon Sep 17 00:00:00 2001 From: SunPast Date: Sat, 15 Nov 2025 16:47:15 +0800 Subject: [PATCH 4/7] modify strelka --- R/cmd-strelka.R | 1 - 1 file changed, 1 deletion(-) diff --git a/R/cmd-strelka.R b/R/cmd-strelka.R index b8bc393..220eefb 100644 --- a/R/cmd-strelka.R +++ b/R/cmd-strelka.R @@ -4,7 +4,6 @@ #' @param script Name of the Strelka script. One of #' `r oxford_comma(code_quote(StrelkaScripts))`. #' @param ... `r rd_dots("strelka")`. -#' @inheritParams python #' @seealso #' - #' From fec957579f726f1deeda0c7d5617dec113dce985 Mon Sep 17 00:00:00 2001 From: SunPast Date: Sat, 15 Nov 2025 17:13:34 +0800 Subject: [PATCH 5/7] modify strelka --- R/cmd-strelka.R | 8 +++++++- man/strelka.Rd | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/R/cmd-strelka.R b/R/cmd-strelka.R index 220eefb..a760e4f 100644 --- a/R/cmd-strelka.R +++ b/R/cmd-strelka.R @@ -1,9 +1,12 @@ +#' Run strelka +#' #' Strelka is a fast and accurate small variant caller optimized for analysis of germline variation #' in small cohorts and somatic variation in tumor/normal sample pairs. #' #' @param script Name of the Strelka script. One of #' `r oxford_comma(code_quote(StrelkaScripts))`. #' @param ... `r rd_dots("strelka")`. +#' @param strelka `r rd_cmd("strelka")`. #' @seealso #' - #' @@ -15,7 +18,10 @@ strelka <- make_command( "strelka", function(script, ...) { script <- rlang::arg_match0(script, StrelkaScripts) - Strelka$new(script = script, ...) + Strelka$new( + script = script, + ... + ) } ) diff --git a/man/strelka.Rd b/man/strelka.Rd index 0384cf2..a77e231 100644 --- a/man/strelka.Rd +++ b/man/strelka.Rd @@ -2,8 +2,7 @@ % Please edit documentation in R/cmd-strelka.R \name{strelka} \alias{strelka} -\title{Strelka is a fast and accurate small variant caller optimized for analysis of germline variation -in small cohorts and somatic variation in tumor/normal sample pairs.} +\title{Run strelka} \usage{ strelka(script, ...) } @@ -12,6 +11,8 @@ strelka(script, ...) \code{"configureStrelkaGermlineWorkflow"}, \code{"configureStrelkaSomaticWorkflow"}, and \code{"runWorkflow"}.} \item{...}{<\link[rlang:dyn-dots]{dynamic dots}> Additional arguments passed to \code{strelka} command. Empty arguments are automatically trimmed. If a single argument, such as a file path, contains spaces, it must be quoted, for example using \code{\link[=shQuote]{shQuote()}}. Details see: \code{cmd_help(strelka())}.} + +\item{strelka}{A string of path to \code{strelka} command.} } \value{ A \code{command} object. From bf01b02e3c27796fe1570855dd5c2a366b214609 Mon Sep 17 00:00:00 2001 From: SunPast Date: Sat, 15 Nov 2025 17:18:54 +0800 Subject: [PATCH 6/7] modify strelka --- _pkgdown.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/_pkgdown.yml b/_pkgdown.yml index 39afd0d..660ec38 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -52,6 +52,7 @@ reference: - varscan - snpEff - gistic2 + - strelka - title: "Transcriptomic tools" desc: "Wrappers for transcriptome sequencing data processing and analysis tools." From 838221f39406a2dce8302692ddd0a16de6526197 Mon Sep 17 00:00:00 2001 From: SunPast Date: Sun, 30 Nov 2025 16:21:36 +0800 Subject: [PATCH 7/7] add minimap2 --- NAMESPACE | 1 + NEWS.md | 2 ++ R/minimap2.R | 70 ++++++++++++++++++++++++++++++++++++++ man/allele_counter.Rd | 1 + man/bcftools.Rd | 1 + man/bedtools.Rd | 1 + man/bowtie2.Rd | 1 + man/bwa.Rd | 1 + man/cellranger.Rd | 1 + man/conda.Rd | 1 + man/exec.Rd | 1 + man/fastp.Rd | 1 + man/fastq_pair.Rd | 1 + man/gistic2.Rd | 1 + man/kraken2.Rd | 1 + man/kraken_tools.Rd | 1 + man/minimap2.Rd | 67 ++++++++++++++++++++++++++++++++++++ man/perl.Rd | 1 + man/pyscenic.Rd | 1 + man/python.Rd | 1 + man/samtools.Rd | 1 + man/seqkit.Rd | 1 + man/snpEff.Rd | 1 + man/strelka.Rd | 1 + man/trust4.Rd | 1 + man/varscan.Rd | 1 + tests/testthat/test-exec.R | 5 +++ 27 files changed, 167 insertions(+) create mode 100644 R/minimap2.R create mode 100644 man/minimap2.Rd diff --git a/NAMESPACE b/NAMESPACE index 9700190..ec82fad 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -35,6 +35,7 @@ export(install_appmamba) export(kraken2) export(kraken_tools) export(make_command) +export(minimap2) export(perl) export(pyscenic) export(python) diff --git a/NEWS.md b/NEWS.md index 6d45bde..c81f907 100644 --- a/NEWS.md +++ b/NEWS.md @@ -18,6 +18,8 @@ * new command `strelka` +* new command `minimap2` + # blit 0.2.0 ## New features diff --git a/R/minimap2.R b/R/minimap2.R new file mode 100644 index 0000000..bb75d40 --- /dev/null +++ b/R/minimap2.R @@ -0,0 +1,70 @@ +#' Run minimap2 +#' +#' Minimap2 is a versatile sequence alignment program that aligns DNA or mRNA sequences against a large reference database. +#' Typical use cases include: +#' (1) mapping PacBio or Oxford Nanopore genomic reads to the human genome; +#' (2) finding overlaps between long reads with error rate up to ~15%; +#' (3) splice-aware alignment of PacBio Iso-Seq or Nanopore cDNA or Direct RNA reads against a reference genome; +#' (4) aligning Illumina single- or paired-end reads; +#' (5) assembly-to-assembly alignment; +#' (6) full-genome alignment between two closely related species with divergence below ~15%. +#' +#' @param method Mapping preset: "map-ont" (single-end long reads) or "sr" (paired-end short reads). +#' @param ref Path to the reference genome FASTA file. +#' @param reads A character vector of FASTQ files used as input to minimap2. +#' @param ofile A string of path to the output SAM file. +#' @param ... `r rd_dots("minimap2")`. +#' @param minimap2 `r rd_cmd("minimap2")`. +#' @family command +#' @inherit exec return +#' @seealso +#' - +#' +#' `r rd_seealso()` +#' @export +minimap2 <- make_command( + "minimap2", + function( + method, + ref, + reads, + ofile, + ..., + minimap2 = NULL + ){ + assert_string(minimap2, allow_empty = FALSE, allow_null = TRUE) + Minimap2$new( + cmd = minimap2, + ..., + method = method, + ref = ref, + reads = reads, + ofile = ofile + ) + } +) + +Minimap2 <- R6Class( + "Minimap2", + inherit = Command, + private = list( + alias = function() "minimap2", + setup_help_params = function() "--help", + setup_command_params = function(method, ref, reads, ofile){ + c( + if (!method %in% c("map-ont", "sr")){ + cli::cli_abort("{.arg method} must be map-ont or sr!") + } else { arg0("-ax", method) }, + ref, + if (length(reads) == 1L){ + reads + } else if (length(reads) == 2L){ + reads + } else { + cli::cli_abort("{.arg reads} must be of length 1 or 2") + }, + arg0(">", ofile) + ) + } + ) +) diff --git a/man/allele_counter.Rd b/man/allele_counter.Rd index 773b3c8..86bc57f 100644 --- a/man/allele_counter.Rd +++ b/man/allele_counter.Rd @@ -54,6 +54,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/bcftools.Rd b/man/bcftools.Rd index 213b908..e19bcee 100644 --- a/man/bcftools.Rd +++ b/man/bcftools.Rd @@ -44,6 +44,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/bedtools.Rd b/man/bedtools.Rd index fa9a7eb..fd62904 100644 --- a/man/bedtools.Rd +++ b/man/bedtools.Rd @@ -41,6 +41,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/bowtie2.Rd b/man/bowtie2.Rd index fc1406d..2bf9c34 100644 --- a/man/bowtie2.Rd +++ b/man/bowtie2.Rd @@ -50,6 +50,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/bwa.Rd b/man/bwa.Rd index 7a4e4cb..fd0dbaf 100644 --- a/man/bwa.Rd +++ b/man/bwa.Rd @@ -56,6 +56,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/cellranger.Rd b/man/cellranger.Rd index 833e9bd..af2928b 100644 --- a/man/cellranger.Rd +++ b/man/cellranger.Rd @@ -58,6 +58,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/conda.Rd b/man/conda.Rd index f3ad07d..759df0b 100644 --- a/man/conda.Rd +++ b/man/conda.Rd @@ -39,6 +39,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/exec.Rd b/man/exec.Rd index f5b734c..4771fb9 100644 --- a/man/exec.Rd +++ b/man/exec.Rd @@ -41,6 +41,7 @@ Invoke a System Command \item \code{\link[=strelka]{strelka()}} \item \code{\link[=trust4]{trust4()}} \item \code{\link[=varscan]{varscan()}} +\item \code{\link[=minimap2]{minimap2()}} } } diff --git a/man/fastp.Rd b/man/fastp.Rd index d4e0cd9..6e9a10d 100644 --- a/man/fastp.Rd +++ b/man/fastp.Rd @@ -43,6 +43,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/fastq_pair.Rd b/man/fastq_pair.Rd index 3eaa56e..a684af0 100644 --- a/man/fastq_pair.Rd +++ b/man/fastq_pair.Rd @@ -64,6 +64,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/gistic2.Rd b/man/gistic2.Rd index d5cc193..d035b02 100644 --- a/man/gistic2.Rd +++ b/man/gistic2.Rd @@ -61,6 +61,7 @@ Other \code{commands}: \code{\link{fastq_pair}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/kraken2.Rd b/man/kraken2.Rd index ab49fa9..174cf5f 100644 --- a/man/kraken2.Rd +++ b/man/kraken2.Rd @@ -67,6 +67,7 @@ Other \code{commands}: \code{\link{fastq_pair}()}, \code{\link{gistic2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/kraken_tools.Rd b/man/kraken_tools.Rd index b299d4f..fe9bed6 100644 --- a/man/kraken_tools.Rd +++ b/man/kraken_tools.Rd @@ -43,6 +43,7 @@ Other \code{commands}: \code{\link{fastq_pair}()}, \code{\link{gistic2}()}, \code{\link{kraken2}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/minimap2.Rd b/man/minimap2.Rd new file mode 100644 index 0000000..5e4ec9e --- /dev/null +++ b/man/minimap2.Rd @@ -0,0 +1,67 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/minimap2.R +\name{minimap2} +\alias{minimap2} +\title{Run minimap2} +\usage{ +minimap2(method, ref, reads, ofile, ..., minimap2 = NULL) +} +\arguments{ +\item{method}{Mapping preset: "map-ont" (single-end long reads) or "sr" (paired-end short reads).} + +\item{ref}{Path to the reference genome FASTA file.} + +\item{reads}{A character vector of FASTQ files used as input to minimap2.} + +\item{ofile}{A string of path to the output SAM file.} + +\item{...}{<\link[rlang:dyn-dots]{dynamic dots}> Additional arguments passed to \code{minimap2} command. Empty arguments are automatically trimmed. If a single argument, such as a file path, contains spaces, it must be quoted, for example using \code{\link[=shQuote]{shQuote()}}. Details see: \code{cmd_help(minimap2())}.} + +\item{minimap2}{A string of path to \code{minimap2} command.} +} +\value{ +A \code{command} object. +} +\description{ +Minimap2 is a versatile sequence alignment program that aligns DNA or mRNA sequences against a large reference database. +Typical use cases include: +(1) mapping PacBio or Oxford Nanopore genomic reads to the human genome; +(2) finding overlaps between long reads with error rate up to ~15\%; +(3) splice-aware alignment of PacBio Iso-Seq or Nanopore cDNA or Direct RNA reads against a reference genome; +(4) aligning Illumina single- or paired-end reads; +(5) assembly-to-assembly alignment; +(6) full-genome alignment between two closely related species with divergence below ~15\%. +} +\seealso{ +\itemize{ +\item \url{https://github.com/lh3/minimap2} +\item \code{\link[=cmd_wd]{cmd_wd()}}/\code{\link[=cmd_envvar]{cmd_envvar()}}/\code{\link[=cmd_envpath]{cmd_envpath()}}/\code{\link[=cmd_condaenv]{cmd_condaenv()}} +\item \code{\link[=cmd_on_start]{cmd_on_start()}}/\code{\link[=cmd_on_exit]{cmd_on_exit()}} +\item \code{\link[=cmd_on_succeed]{cmd_on_succeed()}}/\code{\link[=cmd_on_fail]{cmd_on_fail()}} +\item \code{\link[=cmd_parallel]{cmd_parallel()}} +} + +Other \code{commands}: +\code{\link{allele_counter}()}, +\code{\link{bcftools}()}, +\code{\link{bedtools}()}, +\code{\link{bowtie2}()}, +\code{\link{bwa}()}, +\code{\link{cellranger}()}, +\code{\link{conda}()}, +\code{\link{fastp}()}, +\code{\link{fastq_pair}()}, +\code{\link{gistic2}()}, +\code{\link{kraken2}()}, +\code{\link{kraken_tools}()}, +\code{\link{perl}()}, +\code{\link{pyscenic}()}, +\code{\link{python}()}, +\code{\link{samtools}()}, +\code{\link{seqkit}()}, +\code{\link{snpEff}()}, +\code{\link{strelka}()}, +\code{\link{trust4}()}, +\code{\link{varscan}()} +} +\concept{command} diff --git a/man/perl.Rd b/man/perl.Rd index ef09bf9..8d8447c 100644 --- a/man/perl.Rd +++ b/man/perl.Rd @@ -41,6 +41,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, \code{\link{samtools}()}, diff --git a/man/pyscenic.Rd b/man/pyscenic.Rd index a5a4e87..759fc55 100644 --- a/man/pyscenic.Rd +++ b/man/pyscenic.Rd @@ -41,6 +41,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{python}()}, \code{\link{samtools}()}, diff --git a/man/python.Rd b/man/python.Rd index b99ac82..3c8b62b 100644 --- a/man/python.Rd +++ b/man/python.Rd @@ -41,6 +41,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{samtools}()}, diff --git a/man/samtools.Rd b/man/samtools.Rd index 3d2fb4e..0591ceb 100644 --- a/man/samtools.Rd +++ b/man/samtools.Rd @@ -43,6 +43,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/seqkit.Rd b/man/seqkit.Rd index b53e72f..bc96c50 100644 --- a/man/seqkit.Rd +++ b/man/seqkit.Rd @@ -41,6 +41,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/snpEff.Rd b/man/snpEff.Rd index 0e6316e..07710d6 100644 --- a/man/snpEff.Rd +++ b/man/snpEff.Rd @@ -43,6 +43,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/strelka.Rd b/man/strelka.Rd index a77e231..ff0560c 100644 --- a/man/strelka.Rd +++ b/man/strelka.Rd @@ -43,6 +43,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/trust4.Rd b/man/trust4.Rd index 11f0d00..4703ce7 100644 --- a/man/trust4.Rd +++ b/man/trust4.Rd @@ -96,6 +96,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/man/varscan.Rd b/man/varscan.Rd index 6e5fe9f..4f2f3b2 100644 --- a/man/varscan.Rd +++ b/man/varscan.Rd @@ -43,6 +43,7 @@ Other \code{commands}: \code{\link{gistic2}()}, \code{\link{kraken2}()}, \code{\link{kraken_tools}()}, +\code{\link{minimap2}()}, \code{\link{perl}()}, \code{\link{pyscenic}()}, \code{\link{python}()}, diff --git a/tests/testthat/test-exec.R b/tests/testthat/test-exec.R index 61be657..145765f 100644 --- a/tests/testthat/test-exec.R +++ b/tests/testthat/test-exec.R @@ -135,3 +135,8 @@ testthat::test_that("`strelka()` works as expected", { testthat::skip_if_not(nzchar(Sys.which("strelka"))) strelka() |> cmd_help() }) + +testthat::test_that("`minimap2()` works as expected", { + testthat::skip_if_not(nzchar(Sys.which("strelka"))) + strelka() |> cmd_help() +})