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/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..a760e4f --- /dev/null +++ b/R/cmd-strelka.R @@ -0,0 +1,50 @@ +#' 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 +#' - +#' +#' `r rd_seealso()` +#' @inherit exec return +#' @family command +#' @export +strelka <- make_command( + "strelka", + function(script, ...) { + script <- rlang::arg_match0(script, StrelkaScripts) + Strelka$new( + script = script, + ... + ) + } +) + +Strelka <- R6::R6Class( + "Strelka", + inherit = Command, + private = list( + 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.") + }else{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" +) \ No newline at end of file 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." 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..a77e231 --- /dev/null +++ b/man/strelka.Rd @@ -0,0 +1,55 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/cmd-strelka.R +\name{strelka} +\alias{strelka} +\title{Run strelka} +\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())}.} + +\item{strelka}{A string of path to \code{strelka} command.} +} +\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} 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() +})