The constructor functions create an SYSargs2 S4 class object from three input files: a CWL param and input files, and one simple tabular or yml file, a targets file. The latter is optional for workflow steps lacking input files. TheCWL param provides all the parameters required for running command-line software, following the standard and specification defined on Common Workflow Language (CWL). The input file provides additional information for the command-line, allowing each sample level input/outfile operation uses its own SYSargs2 instance. In the targets file users could provide the paths to the initial sample input files (e.g. FASTQ) along with sample labels, and if appropriate biological replicate and contrast information for controlling differential abundance analyses.

The renderWF function populates all the command-line for each sample in each step of the particular workflow. Each sample level input/outfile operation uses its own SYSargs2 instance. The output of SYSargs2 define all the expected output files for each step in the workflow, which usually it is the sample input for the next step in an SYSargs2 instance. By chaining several SYSargs2 steps together one can construct complex workflows involving many sample-level input/output file operations with any combination of command-line or R-based software. Between different instances, this connectivity is established by `appendStep<-` method. Please check more details from SYSargsList-class class.

loadWorkflow(targets = NULL, wf_file, input_file, dir_path = "param/cwl", id = "SampleName")

renderWF(WF, inputvars = NULL)

updateWF(WF, write.yaml=FALSE, name.yaml="default", new_targets=NULL,
                     new_targetsheader=NULL, inputvars=NULL, silent=FALSE)

Arguments

targets

either the path to targets file or an object of SummarizedExperiment class. The targets file can be either a simple tabular or yml file. Also, it is possible to assign NULL to run the pipeline without the 'targets' file. This can be useful for running specific workflows that do not require input files.

wf_file

name and path to CWL parameters file.

input_file

name and path to input parameters file.

dir_path

path to the parameters directory with the wf_file and input_file files. It is recommended to keep both files in the same directory.

id

A column from targets file, which will be used as an id for each one of the samples. It is required to be unique.

WF

Object of class SYSargs2, generated by loadWF .

inputvars

named character vector. Variables defined in the input file that matches the column names defined in the targets file.

write.yaml

logical. If set to TRUE, it will write to file the content of the CWL files: *.yml. Default is FALSE.

name.yaml

name and path to input parameters file, if write.yaml is set to TRUE. Default value will write a file at the same directory of dir_path appending to the file name the current date.

new_targets

new targets files as list. 'targets' data.frame can be converted by targets.as.list function. Default is NULL, and it will maintain the original.

new_targetsheader

character. New header/comment lines of targets file. Default is NULL, and it will maintain the original.

silent

If set to TRUE, all messages returned by the function will be suppressed.

Value

SYSargs2 object.

Author

Daniela Cassol and Thomas Girke

See also

showClass("SYSargs2")

Examples

## Construct SYSargs2 object from CWl param, CWL input, and targets files 
targets <- system.file("extdata", "targets.txt", package="systemPipeR")
dir_path <- system.file("extdata/cwl", package="systemPipeR")
WF <- loadWorkflow(targets=targets, wf_file="hisat2/hisat2-mapping-se.cwl", 
                  input_file="hisat2/hisat2-mapping-se.yml", dir_path=dir_path)
WF <- renderWF(WF, inputvars=c(FileName="_FASTQ_PATH1_", SampleName="_SampleName_"))
WF
#> Instance of 'SYSargs2':
#>    Slot names/accessors: 
#>       targets: 18 (M1A...V12B), targetsheader: 4 (lines)
#>       modules: 1
#>       wf: 0, clt: 1, yamlinput: 7 (inputs)
#>       input: 18, output: 18
#>       cmdlist: 18
#>    Sub Steps:
#>       1. hisat2-mapping-se (rendered: TRUE)
#> 
#> 

## If required to update the object
yamlinput(WF, "thread")  <- 6L
WF <- updateWF(WF)
cmdlist(WF)[1]
#> $M1A
#> $M1A$`hisat2-mapping-se`
#> [1] "hisat2 -S ./results/M1A.sam  -x ./data/tair10.fasta  -k 1  --min-intronlen 30  --max-intronlen 3000  -U ./data/SRR446027_1.fastq.gz --threads 6"
#> 
#> 
yamlinput(WF)$thread
#> [1] 6