DADA2_MERGE_PAIRS¶
DADA2
Merging denoised forward and reverse reads using dada2 mergePairs
function. Optional parameters are documented in the manual and the function is introduced in the dedicated tutorial section.
URL:
Example¶
This wrapper can be used in the following way:
rule dada2_merge_pairs:
input:
dadaF="denoised/{sample}.1.RDS",# Inferred composition
dadaR="denoised/{sample}.2.RDS",
derepF="uniques/{sample}.1.RDS",# Dereplicated sequences
derepR="uniques/{sample}.2.RDS"
output:
"merged/{sample}.RDS"
# Even though this is an R wrapper, use named arguments in Python syntax
# here, to specify extra parameters. Python booleans (`arg1=True`, `arg2=False`)
# and lists (`list_arg=[]`) are automatically converted to R.
# For a named list as an extra named argument, use a python dict
# (`named_list={name1=arg1}`).
#params:
# verbose=True
log:
"logs/dada2/merge-pairs/{sample}.log"
threads: 1 # set desired number of threads here
wrapper:
"v1.1.0/bio/dada2/merge-pairs"
Note that input, output and log file paths can be chosen freely.
When running with
snakemake --use-conda
the software dependencies will be automatically deployed into an isolated environment before execution.
Software dependencies¶
bioconductor-dada2==1.16
Input/Output¶
Input:
dadaF
: RDS file with the inferred sample composition from forward readsdadaR
: reversederepF
: RDS file with the dereplicated forward readsderepR
: reverse
Output:
- RDS file with the merged pairs
Params¶
optional arguments for ``mergePairs()
, please provide them as pythonkey=value
pairs``:
Authors¶
- Charlie Pauvert
Code¶
# __author__ = "Charlie Pauvert"
# __copyright__ = "Copyright 2020, Charlie Pauvert"
# __email__ = "cpauvert@protonmail.com"
# __license__ = "MIT"
# Snakemake wrapper for merging denoised forward and reverse reads using dada2 mergePairs function.
# Sink the stderr and stdout to the snakemake log file
# https://stackoverflow.com/a/48173272
log.file<-file(snakemake@log[[1]],open="wt")
sink(log.file)
sink(log.file,type="message")
library(dada2)
# Prepare arguments (no matter the order)
args<-list(
dadaF = snakemake@input[["dadaF"]],
derepF = snakemake@input[["derepF"]],
dadaR = snakemake@input[["dadaR"]],
derepR = snakemake@input[["derepR"]]
)
# Read RDS from the list
args<-sapply(args,readRDS)
# Check if extra params are passed
if(length(snakemake@params) > 0 ){
# Keeping only the named elements of the list for do.call()
extra<-snakemake@params[ names(snakemake@params) != "" ]
# Add them to the list of arguments
args<-c(args, extra)
} else{
message("No optional parameters. Using default parameters from dada2::mergePairs()")
}
# Merge pairs
merger<-do.call(mergePairs, args)
# Store the estimated errors as RDS files
saveRDS(merger, snakemake@output[[1]],compress = T)
# Close the connection for the log file
sink(type="message")
sink()