Build branch main with version main (6e6be28)
Build pipeline: viash-hub.demultiplex.main-wmjf8
Source commit: 6e6be28b85
Source message: Prepare CHANGELOG for release 0.2.0
This commit is contained in:
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,4 +1,12 @@
|
||||
# demultiplex v0.1.2
|
||||
# demultiplex v0.2.0
|
||||
|
||||
## Breaking changes
|
||||
|
||||
* `demultiplex` workflow: renamed `sample_sheet` argument to `run_information` (PR #24)
|
||||
|
||||
## New features
|
||||
|
||||
* Add support for `bases2fastq` demultiplexer (PR #24)
|
||||
|
||||
## Minor updates
|
||||
|
||||
|
||||
@@ -11,9 +11,11 @@ argument_groups:
|
||||
- name: --forward_input
|
||||
type: file
|
||||
required: true
|
||||
multiple: true
|
||||
- name: --reverse_input
|
||||
type: file
|
||||
required: false
|
||||
multiple: true
|
||||
- name: Output arguments
|
||||
arguments:
|
||||
- name: --output_forward
|
||||
|
||||
@@ -11,8 +11,8 @@ workflow run_wf {
|
||||
| groupTuple(by: 0, sort: "hash")
|
||||
| map {run_id, states ->
|
||||
// Gather the following state for all samples
|
||||
def forward_fastqs = states.collect{it.forward_input}
|
||||
def reverse_fastqs = states.collect{it.reverse_input}.findAll{it != null}
|
||||
def forward_fastqs = states.collect{it.forward_input}.flatten()
|
||||
def reverse_fastqs = states.collect{it.reverse_input}.findAll{it != null}.flatten()
|
||||
|
||||
def resultState = [
|
||||
"output_forward": forward_fastqs,
|
||||
|
||||
@@ -20,10 +20,12 @@ argument_groups:
|
||||
type: file
|
||||
direction: output
|
||||
required: true
|
||||
multiple: true
|
||||
- name: "--fastq_reverse"
|
||||
type: file
|
||||
direction: output
|
||||
required: false
|
||||
multiple: true
|
||||
resources:
|
||||
- type: nextflow_script
|
||||
path: main.nf
|
||||
|
||||
@@ -14,9 +14,11 @@ workflow run_wf {
|
||||
def original_id = id
|
||||
|
||||
// Parse sample sheet for sample IDs
|
||||
println "Processing run information file ${sample_sheet}"
|
||||
csv_lines = sample_sheet.splitCsv(header: false, sep: ',')
|
||||
csv_lines.any { csv_items ->
|
||||
if (csv_items.isEmpty()) {
|
||||
// skip empty line
|
||||
return
|
||||
}
|
||||
def possible_header = csv_items[0]
|
||||
@@ -24,22 +26,40 @@ workflow run_wf {
|
||||
if (header) {
|
||||
if (start_parsing) {
|
||||
// Stop parsing when encountering the next header
|
||||
println "Encountered next header '[${start_parsing}]', stopping parsing."
|
||||
return true
|
||||
}
|
||||
if (header == "Data") {
|
||||
// [Data] for illumina
|
||||
// [Samples] for Element Biosciences
|
||||
if (header in ["Data", "Samples"]) {
|
||||
println "Found header [${header}], start parsing."
|
||||
start_parsing = true
|
||||
return
|
||||
}
|
||||
}
|
||||
if (start_parsing) {
|
||||
if ( !sample_id_column_index ) {
|
||||
sample_id_column_index = csv_items.findIndexValues{it == "Sample_ID"}
|
||||
assert sample_id_column_index != -1:
|
||||
"Could not find column 'Sample_ID' in sample sheet!"
|
||||
if ( sample_id_column_index == null) {
|
||||
println "Looking for sample name column."
|
||||
sample_id_column_index = csv_items.findIndexValues{it == "Sample_ID" || it == "SampleName"}
|
||||
assert (!sample_id_column_index.isEmpty()):
|
||||
"Could not find column 'Sample_ID' (Illumina) or 'SampleName' " +
|
||||
"(Element Biosciences) in run information! Found: ${sample_id_column_index}"
|
||||
assert sample_id_column_index.size() == 1, "Expected run information file to contain " +
|
||||
"a column 'Sample_ID' or 'SampleName', not both. Found: ${sample_id_column_index}"
|
||||
sample_id_column_index = sample_id_column_index[0]
|
||||
println "Found sample names column '${csv_items[sample_id_column_index]}'."
|
||||
return
|
||||
}
|
||||
samples += csv_items[sample_id_column_index]
|
||||
}
|
||||
// This return is important! (If 'true' is returned, the parsing stops.)
|
||||
return
|
||||
}
|
||||
assert start_parsing:
|
||||
"Sample information file does not contain [Data] or [Samples] header!"
|
||||
assert samples.size() > 1:
|
||||
"Sample information file does not seem to contain any information about the samples!"
|
||||
println "Finished processing run information file, found samples: ${samples}."
|
||||
println "Looking for fastq files in ${state.input}."
|
||||
def allfastqs = state.input.listFiles().findAll{it.isFile() && it.name ==~ /^.+\.fastq.gz$/}
|
||||
println "Found ${allfastqs.size()} fastq files, matching them to the following samples: ${samples}."
|
||||
@@ -48,17 +68,15 @@ workflow run_wf {
|
||||
def reverse_regex = ~/^${sample_id}_S(\d+)_(L(\d+)_)?R2_(\d+)\.fastq\.gz$/
|
||||
def forward_fastq = state.input.listFiles().findAll{it.isFile() && it.name ==~ forward_regex}
|
||||
def reverse_fastq = state.input.listFiles().findAll{it.isFile() && it.name ==~ reverse_regex}
|
||||
assert forward_fastq : "No forward fastq files were found for sample ${sample_id}"
|
||||
assert forward_fastq.size() < 2:
|
||||
"Found multiple forward fastq files corresponding to sample ${sample_id}: ${forward_fastq}"
|
||||
assert reverse_fastq.size() < 2:
|
||||
"Found multiple reverse fastq files corresponding to sample ${sample_id}: ${reverse_fastq}."
|
||||
assert !forward_fastq.isEmpty():
|
||||
"Expected a forward fastq file to have been created correspondig to sample ${sample_id}."
|
||||
// TODO: if one sample had reverse reads, the others must as well.
|
||||
reverse_fastq = !reverse_fastq.isEmpty() ? reverse_fastq[0] : null
|
||||
assert forward_fastq && !forward_fastq.isEmpty(): "No forward fastq files were found for sample ${sample_id}. " +
|
||||
"All fastq files in directory: ${allfastqs.collect{it.name}}"
|
||||
assert (reverse_fastq.isEmpty() || (forward_fastq.size() == reverse_fastq.size())):
|
||||
"Expected equal number of forward and reverse fastq files for sample ${sample_id}. " +
|
||||
"Found forward: ${forward_fastq} and reverse: ${reverse_fastq}."
|
||||
println "Found ${forward_fastq.size()} forward and ${reverse_fastq.size()} reverse " +
|
||||
"fastq files for sample ${sample_id}"
|
||||
def fastqs_state = [
|
||||
"fastq_forward": forward_fastq[0],
|
||||
"fastq_forward": forward_fastq,
|
||||
"fastq_reverse": reverse_fastq,
|
||||
"_meta": [ "join_id": original_id ],
|
||||
]
|
||||
|
||||
@@ -7,12 +7,24 @@ argument_groups:
|
||||
description: Directory containing raw sequencing data
|
||||
type: file
|
||||
required: true
|
||||
- name: --sample_sheet
|
||||
- name: --run_information
|
||||
description: |
|
||||
Sample sheet as input for BCL Convert. If not specified,
|
||||
will try to autodetect the sample sheet in the input directory
|
||||
CSV file containing sample information, which will be used as
|
||||
input for the demultiplexer. Canonically called 'SampleSheet.csv' (Illumina)
|
||||
or 'RunManifest.csv' (Element Biosciences). If not specified,
|
||||
will try to autodetect the sample sheet in the input directory.
|
||||
Requires --demultiplexer to be set.
|
||||
type: file
|
||||
required: false
|
||||
- name: "--demultiplexer"
|
||||
type: string
|
||||
required: false
|
||||
choices: ["bases2fastq", "bclconvert"]
|
||||
description: |
|
||||
Demultiplexer to use, choice depends on the provider
|
||||
of the instrument that was used to generate the data.
|
||||
When not using --sample_sheet, specifying this argument is not
|
||||
required.
|
||||
- name: Output arguments
|
||||
arguments:
|
||||
- name: --output
|
||||
@@ -40,7 +52,10 @@ resources:
|
||||
test_resources:
|
||||
- type: nextflow_script
|
||||
path: test.nf
|
||||
entrypoint: test_wf
|
||||
entrypoint: test_illumina
|
||||
- type: nextflow_script
|
||||
path: test.nf
|
||||
entrypoint: test_bases2fastq
|
||||
|
||||
dependencies:
|
||||
- name: io/untar
|
||||
@@ -53,6 +68,8 @@ dependencies:
|
||||
repository: local
|
||||
- name: bcl_convert
|
||||
repository: bb
|
||||
- name: bases2fastq
|
||||
repository: bb
|
||||
- name: falco
|
||||
repository: bb
|
||||
- name: multiqc
|
||||
@@ -61,7 +78,7 @@ repositories:
|
||||
- name: bb
|
||||
type: vsh
|
||||
repo: biobox
|
||||
tag: v0.2.0
|
||||
tag: v0.3.0
|
||||
|
||||
runners:
|
||||
- type: nextflow
|
||||
|
||||
@@ -11,7 +11,14 @@ viash ns build --setup cb
|
||||
nextflow run . \
|
||||
-main-script src/demultiplex/test.nf \
|
||||
-profile docker,no_publish,local \
|
||||
-entry test_wf \
|
||||
-entry test_illumina \
|
||||
-c src/config/labels.config \
|
||||
--resources_test https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/testdata/NovaSeq6000/ \
|
||||
-resume
|
||||
|
||||
nextflow run . \
|
||||
-main-script src/demultiplex/test.nf \
|
||||
-profile docker,no_publish,local \
|
||||
-entry test_bases2fastq \
|
||||
-c src/config/labels.config \
|
||||
-resume
|
||||
@@ -23,22 +23,79 @@ workflow run_wf {
|
||||
// Gather input files from folder
|
||||
| map {id, state ->
|
||||
def newState = [:]
|
||||
if (!state.sample_sheet) {
|
||||
def sample_sheet = state.input.resolve("SampleSheet.csv")
|
||||
assert (sample_sheet && sample_sheet.isFile()): "Could not find 'SampleSheet.csv' file in input directory."
|
||||
newState["sample_sheet"] = sample_sheet
|
||||
println("Provided run information: ${state.run_information} and demultiplexer: ${state.demultiplexer}")
|
||||
if (!state.run_information) {
|
||||
println("Run information was not specified, auto-detecting...")
|
||||
// The supported_platforms hashmap must be a 1-on-1 mapping
|
||||
// Also, it's keys must be present in the 'choices' field
|
||||
// for the 'run_information' argument in the viash config.
|
||||
def supported_platforms = [
|
||||
"bclconvert": "SampleSheet.csv", // Illumina
|
||||
"bases2fastq": "RunManifest.csv" // Element Biosciences
|
||||
]
|
||||
def found_sample_information = supported_platforms.collectEntries{demultiplexer, filename ->
|
||||
println("Checking if ${filename} can be found in input folder ${state.input}.")
|
||||
def resolved_filename = state.input.resolve(filename)
|
||||
if (!resolved_filename.isFile()) {
|
||||
resolved_filename = null
|
||||
}
|
||||
println("Result after looking for run information for ${demultiplexer}: ${resolved_filename}.")
|
||||
[demultiplexer, resolved_filename]
|
||||
}
|
||||
def demultiplexer = null
|
||||
def run_information = null
|
||||
found_sample_information.each{demultiplexer_candidate, file_path ->
|
||||
if (file_path) {
|
||||
// At this point, a candicate run information file was found.
|
||||
assert !run_information: "Autodetection of run information " +
|
||||
"(SampleSheet, RunManifest) failed: " +
|
||||
"multiple candidate files found in input folder. " +
|
||||
"Please specify one using --run_information."
|
||||
run_information = file_path
|
||||
demultiplexer = demultiplexer_candidate
|
||||
}
|
||||
}
|
||||
|
||||
// When autodetecting, the run information should have been found
|
||||
assert run_information: "No run information file (SampleSheet, RunManifest) " +
|
||||
"found in input directory."
|
||||
|
||||
// When autodetecting, the demultiplexer must be set if the run information was found
|
||||
assert demultiplexer, "State error: the demultiplexer should have been autodetected. " +
|
||||
"Please report this as a bug."
|
||||
|
||||
// When autodetecting, the found demultiplexer must match
|
||||
// with the demultiplexer that the user has provided (in case it was provided).
|
||||
if (state.demultiplexer) {
|
||||
assert state.demultiplexer == demultiplexer,
|
||||
"Requested to use demultiplexer ${state.demultiplexer} " +
|
||||
"but demultiplexer based on the autodetected run information "
|
||||
"file ${run_information} seems to indicate that the demultiplexer "
|
||||
"should be ${demultiplexer}. Either avoid specifying the demultiplexer "
|
||||
"or override the autodetection of the run information by providing "
|
||||
"the file."
|
||||
}
|
||||
println("Using run information ${run_information} and demultiplexer ${demultiplexer}")
|
||||
// At this point, the autodetected state can override the user provided state.
|
||||
newState = newState + [
|
||||
"run_information": run_information,
|
||||
"demultiplexer": demultiplexer,
|
||||
]
|
||||
}
|
||||
|
||||
// Do not add InterOp to state because we generate the summary csv's in the next
|
||||
// step based on the run dir, not the InterOp dir.
|
||||
def interop_dir = state.input.resolve("InterOp")
|
||||
assert interop_dir.isDirectory(): "Expected InterOp directory to be present."
|
||||
if (newState.demultiplexer in ["bclconvert"]) {
|
||||
// Do not add InterOp to state because we generate the summary csv's in the next
|
||||
// step based on the run dir, not the InterOp dir.
|
||||
def interop_dir = state.input.resolve("InterOp")
|
||||
assert interop_dir.isDirectory(): "Expected InterOp directory to be present."
|
||||
}
|
||||
|
||||
def resultState = state + newState
|
||||
[id, resultState]
|
||||
}
|
||||
|
||||
| interop_summary_to_csv.run(
|
||||
runIf: {id, state -> state.demultiplexer in ["bclconvert"]},
|
||||
directives: [label: ["lowmem", "verylowcpu"]],
|
||||
fromState: [
|
||||
"input": "input",
|
||||
@@ -50,16 +107,40 @@ workflow run_wf {
|
||||
)
|
||||
// run bcl_convert
|
||||
| bcl_convert.run(
|
||||
runIf: {id, state -> state.demultiplexer in ["bclconvert"]},
|
||||
directives: [label: ["highmem", "midcpu"]],
|
||||
fromState: [
|
||||
"bcl_input_directory": "input",
|
||||
"sample_sheet": "sample_sheet",
|
||||
"sample_sheet": "run_information",
|
||||
"output_directory": "output",
|
||||
],
|
||||
toState: {id, result, state ->
|
||||
def toAdd = [
|
||||
"output_bclconvert" : result.output_directory,
|
||||
"bclconvert_reports": result.reports,
|
||||
"output_demultiplexer" : result.output_directory,
|
||||
"run_id": id,
|
||||
]
|
||||
def newState = state + toAdd
|
||||
return newState
|
||||
}
|
||||
)
|
||||
// run bases2fastq
|
||||
| bases2fastq.run(
|
||||
runIf: {id, state -> state.demultiplexer in ["bases2fastq"]},
|
||||
directives: [label: ["highmem", "midcpu"]],
|
||||
fromState: [
|
||||
"analysis_directory": "input",
|
||||
"run_manifest": "run_information",
|
||||
"output_directory": "output",
|
||||
],
|
||||
args: [
|
||||
"no_projects": true, // Do not put output files in a subfolder for project
|
||||
//"split_lanes": true,
|
||||
"legacy_fastq": true, // Illumina style output names
|
||||
"group_fastq": true, // No subdir per sample
|
||||
],
|
||||
toState: {id, result, state ->
|
||||
def toAdd = [
|
||||
"output_demultiplexer" : result.output_directory,
|
||||
"run_id": id,
|
||||
]
|
||||
def newState = state + toAdd
|
||||
@@ -68,8 +149,8 @@ workflow run_wf {
|
||||
)
|
||||
| gather_fastqs_and_validate.run(
|
||||
fromState: [
|
||||
"input": "output_bclconvert",
|
||||
"sample_sheet": "sample_sheet",
|
||||
"input": "output_demultiplexer",
|
||||
"sample_sheet": "run_information",
|
||||
],
|
||||
toState: [
|
||||
"fastq_forward": "fastq_forward",
|
||||
@@ -110,15 +191,18 @@ workflow run_wf {
|
||||
| multiqc.run(
|
||||
directives: [label: ["lowcpu", "lowmem"]],
|
||||
fromState: {id, state ->
|
||||
[
|
||||
"input": [
|
||||
state.output_falco,
|
||||
def new_state = [
|
||||
"input": [state.output_falco],
|
||||
"output_report": state.output_multiqc,
|
||||
"cl_config": 'sp: {fastqc/data: {fn: "*_fastqc_data.txt"}}'
|
||||
]
|
||||
if (state.demultiplexer == "bclconvert") {
|
||||
new_state["input"] += [
|
||||
state.interop_run_summary.getParent(),
|
||||
state.interop_index_summary.getParent()
|
||||
],
|
||||
"output_report": state.output_multiqc,
|
||||
"cl_config": 'sp: {fastqc/data: {fn: "*_fastqc_data.txt"}}',
|
||||
]
|
||||
]
|
||||
}
|
||||
return new_state
|
||||
},
|
||||
toState: { id, result, state ->
|
||||
state + [ "output_multiqc" : result.output_report ]
|
||||
@@ -126,7 +210,7 @@ workflow run_wf {
|
||||
)
|
||||
| setState(
|
||||
[
|
||||
"output": "output_bclconvert",
|
||||
"output": "output_demultiplexer",
|
||||
"output_falco": "output_falco",
|
||||
"output_multiqc": "output_multiqc"
|
||||
]
|
||||
|
||||
@@ -4,7 +4,7 @@ include { demultiplex } from params.rootDir + "/target/nextflow/demultiplex/main
|
||||
|
||||
params.resources_test = params.rootDir + "/testData/"
|
||||
|
||||
workflow test_wf {
|
||||
workflow test_illumina {
|
||||
output_ch = Channel.fromList([
|
||||
[
|
||||
// sample_sheet: resources_test.resolve("bcl_convert_samplesheet.csv"),
|
||||
@@ -27,5 +27,36 @@ workflow test_wf {
|
||||
assert state.output.isDirectory(): "Expected bclconvert output to be a directory"
|
||||
assert state.output_falco.isDirectory(): "Expected falco output to be a directory"
|
||||
assert state.output_multiqc.isFile(): "Expected multiQC output to be a file"
|
||||
fastq_files = state.output.listFiles().collect{it.name}
|
||||
assert ["Undetermined_S0_L001_R1_001.fastq.gz", "Sample23_S3_L001_R1_001.fastq.gz",
|
||||
"sampletest_S4_L001_R1_001.fastq.gz", "Sample1_S1_L001_R1_001.fastq.gz",
|
||||
"SampleA_S2_L001_R1_001.fastq.gz"].toSet() == fastq_files.toSet(): \
|
||||
"Output directory should contain the expected FASTQ files"
|
||||
fastq_files.each{
|
||||
assert it.length() != 0: "Expected FASTQ file to not be empty"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
workflow test_bases2fastq {
|
||||
output_ch = Channel.fromList([
|
||||
[
|
||||
input: "http://element-public-data.s3.amazonaws.com/bases2fastq-share/bases2fastq-v2/20230404-bases2fastq-sim-151-151-9-9.tar.gz",
|
||||
publish_dir: "output_dir/",
|
||||
]
|
||||
])
|
||||
| map { state -> [ "run", state ] }
|
||||
| demultiplex.run(
|
||||
toState: { id, output, state ->
|
||||
output + [ orig_input: state.input ] }
|
||||
)
|
||||
| view { output ->
|
||||
assert output.size() == 2 : "outputs should contain two elements; [id, file]"
|
||||
"Output: $output"
|
||||
}
|
||||
| map {id, state ->
|
||||
assert state.output.isDirectory(): "Expected bases2fastq output to be a directory"
|
||||
assert state.output_falco.isDirectory(): "Expected falco output to be a directory"
|
||||
assert state.output_multiqc.isFile(): "Expected multiQC output to be a file"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,421 @@
|
||||
name: "bases2fastq"
|
||||
version: "v0.3.0"
|
||||
authors:
|
||||
- name: "Dries Schaumont"
|
||||
roles:
|
||||
- "author"
|
||||
- "maintainer"
|
||||
info:
|
||||
links:
|
||||
email: "dries@data-intuitive.com"
|
||||
github: "DriesSchaumont"
|
||||
orcid: "0000-0002-4389-0440"
|
||||
linkedin: "dries-schaumont"
|
||||
organizations:
|
||||
- name: "Data Intuitive"
|
||||
href: "https://www.data-intuitive.com"
|
||||
role: "Data Scientist"
|
||||
argument_groups:
|
||||
- name: "Input"
|
||||
arguments:
|
||||
- type: "file"
|
||||
name: "--analysis_directory"
|
||||
description: "Location of analysis directory"
|
||||
info: null
|
||||
example:
|
||||
- "input"
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: true
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "file"
|
||||
name: "--run_manifest"
|
||||
alternatives:
|
||||
- "-r"
|
||||
description: "Location of run manifest to use instead of default RunManifest.csv\
|
||||
\ found in analysis directory"
|
||||
info: null
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- name: "Output"
|
||||
arguments:
|
||||
- type: "file"
|
||||
name: "--output_directory"
|
||||
alternatives:
|
||||
- "-o"
|
||||
description: "Location to save output fastqs"
|
||||
info: null
|
||||
example:
|
||||
- "fastq_dir"
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: true
|
||||
direction: "output"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "file"
|
||||
name: "--report"
|
||||
description: "Output location for the HTML report"
|
||||
info: null
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: false
|
||||
direction: "output"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "file"
|
||||
name: "--logs"
|
||||
description: "Directory containing log files"
|
||||
info: null
|
||||
example:
|
||||
- "logs_dir"
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: false
|
||||
direction: "output"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- name: "Arguments"
|
||||
arguments:
|
||||
- type: "string"
|
||||
name: "--chemistry_version"
|
||||
description: "Run parameters override, chemistry version."
|
||||
info: null
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "boolean_true"
|
||||
name: "--demux_only"
|
||||
alternatives:
|
||||
- "-d"
|
||||
description: "Generate demux files and indexing stats without generating FASTQ\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "boolean_true"
|
||||
name: "--detect_adapters"
|
||||
description: "Detect adapters sequences, overriding any sequences present in run\
|
||||
\ manifest.\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "boolean_true"
|
||||
name: "--error_on_missing"
|
||||
description: "Terminate execution for a missing file (by default, missing files\
|
||||
\ are\nskipped and execution continues). Also set by --strict.\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "string"
|
||||
name: "--exclude_tile"
|
||||
alternatives:
|
||||
- "-e"
|
||||
description: "Regex matching tile names to exclude. This flag can be specified\
|
||||
\ multiple times. (e.g. L1.*C0[23]S.)\n"
|
||||
info: null
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: true
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--filter_mask"
|
||||
description: "Run parameters override, custom pass filter mask.\n"
|
||||
info: null
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--flowcell_id"
|
||||
description: "Run parameters override, flowcell ID.\n"
|
||||
info: null
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "boolean_true"
|
||||
name: "--force_index_orientation"
|
||||
description: "Do not attempt to find orientation for I1/I2 reads (reverse complement).\n\
|
||||
Use orientation given in run manifest.\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "boolean_true"
|
||||
name: "--group_fastq"
|
||||
description: "Group all FASTQ/stats/metrics for a project are in the project folder.\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "integer"
|
||||
name: "--i1_cycles"
|
||||
description: "Run parameters override, I1 cycles.\n"
|
||||
info: null
|
||||
required: false
|
||||
min: 1
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "integer"
|
||||
name: "--i2_cycles"
|
||||
description: "Run parameters override, I2 cycles\n"
|
||||
info: null
|
||||
required: false
|
||||
min: 1
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--include_tile"
|
||||
alternatives:
|
||||
- "-i"
|
||||
description: "Regex matching tile names to include. This flag\ncan be specified\
|
||||
\ multiple times. (e.g. L1.*C0[23]S.)\n"
|
||||
info: null
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: true
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--kit_configuration"
|
||||
description: "Run parameters override, kit configuration.\n"
|
||||
info: null
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "boolean_true"
|
||||
name: "--legacy_fastq"
|
||||
description: "Legacy naming for FASTQ files (e.g. SampleName_S1_L001_R1_001.fastq.gz)\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "string"
|
||||
name: "--log_level"
|
||||
alternatives:
|
||||
- "-l"
|
||||
description: "Severity level for logging.\n"
|
||||
info: null
|
||||
example:
|
||||
- "INFO"
|
||||
required: false
|
||||
choices:
|
||||
- "DEBUG"
|
||||
- "INFO"
|
||||
- "WARNING"
|
||||
- "ERROR"
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "boolean_true"
|
||||
name: "--no_error_on_invalid"
|
||||
description: "Skip invalid files and continue execution. Overridden by --strict\
|
||||
\ options\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "boolean_true"
|
||||
name: "--no_projects"
|
||||
description: "Disable project directories\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "integer"
|
||||
name: "--num_unassigned"
|
||||
description: "Max Number of unassigned sequences to report.\n"
|
||||
info: null
|
||||
example:
|
||||
- 30
|
||||
required: false
|
||||
min: 0
|
||||
max: 1000
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--preparation_workflow"
|
||||
description: "Run parameters override, preparation workflow. \n"
|
||||
info: null
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "boolean_true"
|
||||
name: "--qc_only"
|
||||
description: "Quickly generate run stats for single tile without generating FASTQ.\n\
|
||||
Use --include_tile/--exclude_tile to define custom tile set.\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "integer"
|
||||
name: "--r1_cycles"
|
||||
description: "Run parameters override, R1 cycles.\n"
|
||||
info: null
|
||||
required: false
|
||||
min: 1
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "integer"
|
||||
name: "--r2_cycles"
|
||||
description: "Run parameters override, R2 cycles.\n"
|
||||
info: null
|
||||
required: false
|
||||
min: 1
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "boolean_true"
|
||||
name: "--split_lanes"
|
||||
description: "Split FASTQ files by lane.\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "boolean_true"
|
||||
name: "--strict"
|
||||
description: "In strict mode any invalid or missing input file will terminate\
|
||||
\ execution \n(overrides no_error_on_invalid and sets --error_on_missing)\n"
|
||||
info: null
|
||||
direction: "input"
|
||||
resources:
|
||||
- type: "bash_script"
|
||||
path: "script.sh"
|
||||
is_executable: true
|
||||
description: "Bases2Fastq demultiplexes sequencing data generated by Element Biosciences\
|
||||
\ instruments and converts base calls into FASTQ files.\n"
|
||||
test_resources:
|
||||
- type: "bash_script"
|
||||
path: "test.sh"
|
||||
is_executable: true
|
||||
info: null
|
||||
status: "enabled"
|
||||
requirements:
|
||||
commands:
|
||||
- "ps"
|
||||
keywords:
|
||||
- "demultiplex"
|
||||
- "fastq"
|
||||
- "demux"
|
||||
- "Element Biosciences"
|
||||
license: "Proprietairy"
|
||||
links:
|
||||
repository: "https://github.com/viash-hub/biobox"
|
||||
documentation: "https://docs.elembio.io/docs/bases2fastq/introduction/"
|
||||
runners:
|
||||
- type: "executable"
|
||||
id: "executable"
|
||||
docker_setup_strategy: "ifneedbepullelsecachedbuild"
|
||||
- type: "nextflow"
|
||||
id: "nextflow"
|
||||
directives:
|
||||
tag: "$id"
|
||||
auto:
|
||||
simplifyInput: true
|
||||
simplifyOutput: false
|
||||
transcript: false
|
||||
publish: false
|
||||
config:
|
||||
labels:
|
||||
mem1gb: "memory = 1000000000.B"
|
||||
mem2gb: "memory = 2000000000.B"
|
||||
mem5gb: "memory = 5000000000.B"
|
||||
mem10gb: "memory = 10000000000.B"
|
||||
mem20gb: "memory = 20000000000.B"
|
||||
mem50gb: "memory = 50000000000.B"
|
||||
mem100gb: "memory = 100000000000.B"
|
||||
mem200gb: "memory = 200000000000.B"
|
||||
mem500gb: "memory = 500000000000.B"
|
||||
mem1tb: "memory = 1000000000000.B"
|
||||
mem2tb: "memory = 2000000000000.B"
|
||||
mem5tb: "memory = 5000000000000.B"
|
||||
mem10tb: "memory = 10000000000000.B"
|
||||
mem20tb: "memory = 20000000000000.B"
|
||||
mem50tb: "memory = 50000000000000.B"
|
||||
mem100tb: "memory = 100000000000000.B"
|
||||
mem200tb: "memory = 200000000000000.B"
|
||||
mem500tb: "memory = 500000000000000.B"
|
||||
mem1gib: "memory = 1073741824.B"
|
||||
mem2gib: "memory = 2147483648.B"
|
||||
mem4gib: "memory = 4294967296.B"
|
||||
mem8gib: "memory = 8589934592.B"
|
||||
mem16gib: "memory = 17179869184.B"
|
||||
mem32gib: "memory = 34359738368.B"
|
||||
mem64gib: "memory = 68719476736.B"
|
||||
mem128gib: "memory = 137438953472.B"
|
||||
mem256gib: "memory = 274877906944.B"
|
||||
mem512gib: "memory = 549755813888.B"
|
||||
mem1tib: "memory = 1099511627776.B"
|
||||
mem2tib: "memory = 2199023255552.B"
|
||||
mem4tib: "memory = 4398046511104.B"
|
||||
mem8tib: "memory = 8796093022208.B"
|
||||
mem16tib: "memory = 17592186044416.B"
|
||||
mem32tib: "memory = 35184372088832.B"
|
||||
mem64tib: "memory = 70368744177664.B"
|
||||
mem128tib: "memory = 140737488355328.B"
|
||||
mem256tib: "memory = 281474976710656.B"
|
||||
mem512tib: "memory = 562949953421312.B"
|
||||
cpu1: "cpus = 1"
|
||||
cpu2: "cpus = 2"
|
||||
cpu5: "cpus = 5"
|
||||
cpu10: "cpus = 10"
|
||||
cpu20: "cpus = 20"
|
||||
cpu50: "cpus = 50"
|
||||
cpu100: "cpus = 100"
|
||||
cpu200: "cpus = 200"
|
||||
cpu500: "cpus = 500"
|
||||
cpu1000: "cpus = 1000"
|
||||
debug: false
|
||||
container: "docker"
|
||||
engines:
|
||||
- type: "docker"
|
||||
id: "docker"
|
||||
image: "elembio/bases2fastq:2.1.0"
|
||||
target_registry: "images.viash-hub.com"
|
||||
target_tag: "v0.3.0"
|
||||
namespace_separator: "/"
|
||||
setup:
|
||||
- type: "apt"
|
||||
packages:
|
||||
- "procps"
|
||||
- "tree"
|
||||
interactive: false
|
||||
- type: "docker"
|
||||
run:
|
||||
- "echo \"bases2fastq: $(bases2fastq --version | cut -d' ' -f3)\" > /var/software_versions.txt\n"
|
||||
test_setup:
|
||||
- type: "apt"
|
||||
packages:
|
||||
- "curl"
|
||||
interactive: false
|
||||
entrypoint: []
|
||||
cmd: null
|
||||
- type: "native"
|
||||
id: "native"
|
||||
build_info:
|
||||
config: "src/bases2fastq/config.vsh.yaml"
|
||||
runner: "nextflow"
|
||||
engine: "docker|native"
|
||||
output: "target/nextflow/bases2fastq"
|
||||
executable: "target/nextflow/bases2fastq/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "d86bd5cf62104af02caa852aacd352b1aa97ed60"
|
||||
git_remote: "https://x-access-token:ghs_EwAUAMYJ0K4VBHlAEMs4ZP2OyQYqJM0PSfEO@github.com/viash-hub/biobox"
|
||||
git_tag: "v0.2.0-29-gd86bd5c"
|
||||
package_config:
|
||||
name: "biobox"
|
||||
version: "v0.3.0"
|
||||
description: "A collection of bioinformatics tools for working with sequence data.\n"
|
||||
info: null
|
||||
viash_version: "0.9.0"
|
||||
source: "src"
|
||||
target: "target"
|
||||
config_mods:
|
||||
- ".requirements.commands := ['ps']\n"
|
||||
- ".engines += { type: \"native\" }"
|
||||
- ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v0.3.0'"
|
||||
keywords:
|
||||
- "bioinformatics"
|
||||
- "modules"
|
||||
- "sequencing"
|
||||
license: "MIT"
|
||||
organization: "vsh"
|
||||
links:
|
||||
repository: "https://github.com/viash-hub/biobox"
|
||||
issue_tracker: "https://github.com/viash-hub/biobox/issues"
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,126 @@
|
||||
manifest {
|
||||
name = 'bases2fastq'
|
||||
mainScript = 'main.nf'
|
||||
nextflowVersion = '!>=20.12.1-edge'
|
||||
version = 'v0.3.0'
|
||||
description = 'Bases2Fastq demultiplexes sequencing data generated by Element Biosciences instruments and converts base calls into FASTQ files.\n'
|
||||
author = 'Dries Schaumont'
|
||||
}
|
||||
|
||||
process.container = 'nextflow/bash:latest'
|
||||
|
||||
// detect tempdir
|
||||
tempDir = java.nio.file.Paths.get(
|
||||
System.getenv('NXF_TEMP') ?:
|
||||
System.getenv('VIASH_TEMP') ?:
|
||||
System.getenv('TEMPDIR') ?:
|
||||
System.getenv('TMPDIR') ?:
|
||||
'/tmp'
|
||||
).toAbsolutePath()
|
||||
|
||||
profiles {
|
||||
no_publish {
|
||||
process {
|
||||
withName: '.*' {
|
||||
publishDir = [
|
||||
enabled: false
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
mount_temp {
|
||||
docker.temp = tempDir
|
||||
podman.temp = tempDir
|
||||
charliecloud.temp = tempDir
|
||||
}
|
||||
docker {
|
||||
docker.enabled = true
|
||||
// docker.userEmulation = true
|
||||
singularity.enabled = false
|
||||
podman.enabled = false
|
||||
shifter.enabled = false
|
||||
charliecloud.enabled = false
|
||||
}
|
||||
singularity {
|
||||
singularity.enabled = true
|
||||
singularity.autoMounts = true
|
||||
docker.enabled = false
|
||||
podman.enabled = false
|
||||
shifter.enabled = false
|
||||
charliecloud.enabled = false
|
||||
}
|
||||
podman {
|
||||
podman.enabled = true
|
||||
docker.enabled = false
|
||||
singularity.enabled = false
|
||||
shifter.enabled = false
|
||||
charliecloud.enabled = false
|
||||
}
|
||||
shifter {
|
||||
shifter.enabled = true
|
||||
docker.enabled = false
|
||||
singularity.enabled = false
|
||||
podman.enabled = false
|
||||
charliecloud.enabled = false
|
||||
}
|
||||
charliecloud {
|
||||
charliecloud.enabled = true
|
||||
docker.enabled = false
|
||||
singularity.enabled = false
|
||||
podman.enabled = false
|
||||
shifter.enabled = false
|
||||
}
|
||||
}
|
||||
|
||||
process{
|
||||
withLabel: mem1gb { memory = 1000000000.B }
|
||||
withLabel: mem2gb { memory = 2000000000.B }
|
||||
withLabel: mem5gb { memory = 5000000000.B }
|
||||
withLabel: mem10gb { memory = 10000000000.B }
|
||||
withLabel: mem20gb { memory = 20000000000.B }
|
||||
withLabel: mem50gb { memory = 50000000000.B }
|
||||
withLabel: mem100gb { memory = 100000000000.B }
|
||||
withLabel: mem200gb { memory = 200000000000.B }
|
||||
withLabel: mem500gb { memory = 500000000000.B }
|
||||
withLabel: mem1tb { memory = 1000000000000.B }
|
||||
withLabel: mem2tb { memory = 2000000000000.B }
|
||||
withLabel: mem5tb { memory = 5000000000000.B }
|
||||
withLabel: mem10tb { memory = 10000000000000.B }
|
||||
withLabel: mem20tb { memory = 20000000000000.B }
|
||||
withLabel: mem50tb { memory = 50000000000000.B }
|
||||
withLabel: mem100tb { memory = 100000000000000.B }
|
||||
withLabel: mem200tb { memory = 200000000000000.B }
|
||||
withLabel: mem500tb { memory = 500000000000000.B }
|
||||
withLabel: mem1gib { memory = 1073741824.B }
|
||||
withLabel: mem2gib { memory = 2147483648.B }
|
||||
withLabel: mem4gib { memory = 4294967296.B }
|
||||
withLabel: mem8gib { memory = 8589934592.B }
|
||||
withLabel: mem16gib { memory = 17179869184.B }
|
||||
withLabel: mem32gib { memory = 34359738368.B }
|
||||
withLabel: mem64gib { memory = 68719476736.B }
|
||||
withLabel: mem128gib { memory = 137438953472.B }
|
||||
withLabel: mem256gib { memory = 274877906944.B }
|
||||
withLabel: mem512gib { memory = 549755813888.B }
|
||||
withLabel: mem1tib { memory = 1099511627776.B }
|
||||
withLabel: mem2tib { memory = 2199023255552.B }
|
||||
withLabel: mem4tib { memory = 4398046511104.B }
|
||||
withLabel: mem8tib { memory = 8796093022208.B }
|
||||
withLabel: mem16tib { memory = 17592186044416.B }
|
||||
withLabel: mem32tib { memory = 35184372088832.B }
|
||||
withLabel: mem64tib { memory = 70368744177664.B }
|
||||
withLabel: mem128tib { memory = 140737488355328.B }
|
||||
withLabel: mem256tib { memory = 281474976710656.B }
|
||||
withLabel: mem512tib { memory = 562949953421312.B }
|
||||
withLabel: cpu1 { cpus = 1 }
|
||||
withLabel: cpu2 { cpus = 2 }
|
||||
withLabel: cpu5 { cpus = 5 }
|
||||
withLabel: cpu10 { cpus = 10 }
|
||||
withLabel: cpu20 { cpus = 20 }
|
||||
withLabel: cpu50 { cpus = 50 }
|
||||
withLabel: cpu100 { cpus = 100 }
|
||||
withLabel: cpu200 { cpus = 200 }
|
||||
withLabel: cpu500 { cpus = 500 }
|
||||
withLabel: cpu1000 { cpus = 1000 }
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,394 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"title": "bases2fastq",
|
||||
"description": "Bases2Fastq demultiplexes sequencing data generated by Element Biosciences instruments and converts base calls into FASTQ files.\n",
|
||||
"type": "object",
|
||||
"definitions": {
|
||||
|
||||
|
||||
|
||||
"arguments" : {
|
||||
"title": "Arguments",
|
||||
"type": "object",
|
||||
"description": "No description",
|
||||
"properties": {
|
||||
|
||||
|
||||
"chemistry_version": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`. Run parameters override, chemistry version",
|
||||
"help_text": "Type: `string`. Run parameters override, chemistry version."
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"demux_only": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Generate demux files and indexing stats without generating FASTQ\n",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Generate demux files and indexing stats without generating FASTQ\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"detect_adapters": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Detect adapters sequences, overriding any sequences present in run manifest",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Detect adapters sequences, overriding any sequences present in run manifest.\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"error_on_missing": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Terminate execution for a missing file (by default, missing files are\nskipped and execution continues)",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Terminate execution for a missing file (by default, missing files are\nskipped and execution continues). Also set by --strict.\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"exclude_tile": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: List of `string`, multiple_sep: `\";\"`. Regex matching tile names to exclude",
|
||||
"help_text": "Type: List of `string`, multiple_sep: `\";\"`. Regex matching tile names to exclude. This flag can be specified multiple times. (e.g. L1.*C0[23]S.)\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"filter_mask": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`. Run parameters override, custom pass filter mask",
|
||||
"help_text": "Type: `string`. Run parameters override, custom pass filter mask.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"flowcell_id": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`. Run parameters override, flowcell ID",
|
||||
"help_text": "Type: `string`. Run parameters override, flowcell ID.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"force_index_orientation": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Do not attempt to find orientation for I1/I2 reads (reverse complement)",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Do not attempt to find orientation for I1/I2 reads (reverse complement).\nUse orientation given in run manifest.\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"group_fastq": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Group all FASTQ/stats/metrics for a project are in the project folder",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Group all FASTQ/stats/metrics for a project are in the project folder.\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"i1_cycles": {
|
||||
"type":
|
||||
"integer",
|
||||
"description": "Type: `integer`. Run parameters override, I1 cycles",
|
||||
"help_text": "Type: `integer`. Run parameters override, I1 cycles.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"i2_cycles": {
|
||||
"type":
|
||||
"integer",
|
||||
"description": "Type: `integer`. Run parameters override, I2 cycles\n",
|
||||
"help_text": "Type: `integer`. Run parameters override, I2 cycles\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"include_tile": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: List of `string`, multiple_sep: `\";\"`. Regex matching tile names to include",
|
||||
"help_text": "Type: List of `string`, multiple_sep: `\";\"`. Regex matching tile names to include. This flag\ncan be specified multiple times. (e.g. L1.*C0[23]S.)\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"kit_configuration": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`. Run parameters override, kit configuration",
|
||||
"help_text": "Type: `string`. Run parameters override, kit configuration.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"legacy_fastq": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Legacy naming for FASTQ files (e",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Legacy naming for FASTQ files (e.g. SampleName_S1_L001_R1_001.fastq.gz)\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"log_level": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`, example: `INFO`, choices: ``DEBUG`, `INFO`, `WARNING`, `ERROR``. Severity level for logging",
|
||||
"help_text": "Type: `string`, example: `INFO`, choices: ``DEBUG`, `INFO`, `WARNING`, `ERROR``. Severity level for logging.\n",
|
||||
"enum": ["DEBUG", "INFO", "WARNING", "ERROR"]
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"no_error_on_invalid": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Skip invalid files and continue execution",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Skip invalid files and continue execution. Overridden by --strict options\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"no_projects": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Disable project directories\n",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Disable project directories\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"num_unassigned": {
|
||||
"type":
|
||||
"integer",
|
||||
"description": "Type: `integer`, example: `30`. Max Number of unassigned sequences to report",
|
||||
"help_text": "Type: `integer`, example: `30`. Max Number of unassigned sequences to report.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"preparation_workflow": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`. Run parameters override, preparation workflow",
|
||||
"help_text": "Type: `string`. Run parameters override, preparation workflow. \n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"qc_only": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Quickly generate run stats for single tile without generating FASTQ",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Quickly generate run stats for single tile without generating FASTQ.\nUse --include_tile/--exclude_tile to define custom tile set.\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"r1_cycles": {
|
||||
"type":
|
||||
"integer",
|
||||
"description": "Type: `integer`. Run parameters override, R1 cycles",
|
||||
"help_text": "Type: `integer`. Run parameters override, R1 cycles.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"r2_cycles": {
|
||||
"type":
|
||||
"integer",
|
||||
"description": "Type: `integer`. Run parameters override, R2 cycles",
|
||||
"help_text": "Type: `integer`. Run parameters override, R2 cycles.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"split_lanes": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. Split FASTQ files by lane",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Split FASTQ files by lane.\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"strict": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. In strict mode any invalid or missing input file will terminate execution \n(overrides no_error_on_invalid and sets --error_on_missing)\n",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. In strict mode any invalid or missing input file will terminate execution \n(overrides no_error_on_invalid and sets --error_on_missing)\n"
|
||||
,
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
"input" : {
|
||||
"title": "Input",
|
||||
"type": "object",
|
||||
"description": "No description",
|
||||
"properties": {
|
||||
|
||||
|
||||
"analysis_directory": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`, required, example: `input`. Location of analysis directory",
|
||||
"help_text": "Type: `file`, required, example: `input`. Location of analysis directory"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"run_manifest": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`. Location of run manifest to use instead of default RunManifest",
|
||||
"help_text": "Type: `file`. Location of run manifest to use instead of default RunManifest.csv found in analysis directory"
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
"output" : {
|
||||
"title": "Output",
|
||||
"type": "object",
|
||||
"description": "No description",
|
||||
"properties": {
|
||||
|
||||
|
||||
"output_directory": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`, required, default: `$id.$key.output_directory.output_directory`, example: `fastq_dir`. Location to save output fastqs",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.output_directory.output_directory`, example: `fastq_dir`. Location to save output fastqs"
|
||||
,
|
||||
"default":"$id.$key.output_directory.output_directory"
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"report": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`, default: `$id.$key.report.report`. Output location for the HTML report",
|
||||
"help_text": "Type: `file`, default: `$id.$key.report.report`. Output location for the HTML report"
|
||||
,
|
||||
"default":"$id.$key.report.report"
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"logs": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`, default: `$id.$key.logs.logs`, example: `logs_dir`. Directory containing log files",
|
||||
"help_text": "Type: `file`, default: `$id.$key.logs.logs`, example: `logs_dir`. Directory containing log files"
|
||||
,
|
||||
"default":"$id.$key.logs.logs"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
"nextflow input-output arguments" : {
|
||||
"title": "Nextflow input-output arguments",
|
||||
"type": "object",
|
||||
"description": "Input/output parameters for Nextflow itself. Please note that both publishDir and publish_dir are supported but at least one has to be configured.",
|
||||
"properties": {
|
||||
|
||||
|
||||
"publish_dir": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`, required, example: `output/`. Path to an output directory",
|
||||
"help_text": "Type: `string`, required, example: `output/`. Path to an output directory."
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"param_list": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`, example: `my_params.yaml`. Allows inputting multiple parameter sets to initialise a Nextflow channel",
|
||||
"help_text": "Type: `string`, example: `my_params.yaml`. Allows inputting multiple parameter sets to initialise a Nextflow channel. A `param_list` can either be a list of maps, a csv file, a json file, a yaml file, or simply a yaml blob.\n\n* A list of maps (as-is) where the keys of each map corresponds to the arguments of the pipeline. Example: in a `nextflow.config` file: `param_list: [ [\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027], [\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027] ]`.\n* A csv file should have column names which correspond to the different arguments of this pipeline. Example: `--param_list data.csv` with columns `id,input`.\n* A json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. Example: `--param_list data.json` with contents `[ {\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027}, {\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027} ]`.\n* A yaml blob can also be passed directly as a string. Example: `--param_list \"[ {\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027}, {\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027} ]\"`.\n\nWhen passing a csv, json or yaml file, relative path names are relativized to the location of the parameter file. No relativation is performed when `param_list` is a list of maps (as-is) or a yaml blob.",
|
||||
"hidden": true
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
|
||||
{
|
||||
"$ref": "#/definitions/arguments"
|
||||
},
|
||||
|
||||
{
|
||||
"$ref": "#/definitions/input"
|
||||
},
|
||||
|
||||
{
|
||||
"$ref": "#/definitions/output"
|
||||
},
|
||||
|
||||
{
|
||||
"$ref": "#/definitions/nextflow input-output arguments"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
name: "bcl_convert"
|
||||
version: "v0.2.0"
|
||||
version: "v0.3.0"
|
||||
authors:
|
||||
- name: "Toni Verbeiren"
|
||||
roles:
|
||||
@@ -386,7 +386,7 @@ engines:
|
||||
id: "docker"
|
||||
image: "debian:trixie-slim"
|
||||
target_registry: "images.viash-hub.com"
|
||||
target_tag: "v0.2.0"
|
||||
target_tag: "v0.3.0"
|
||||
namespace_separator: "/"
|
||||
setup:
|
||||
- type: "apt"
|
||||
@@ -418,11 +418,12 @@ build_info:
|
||||
output: "target/nextflow/bcl_convert"
|
||||
executable: "target/nextflow/bcl_convert/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "7e530218844c373048bc33de58f021b6460642e5"
|
||||
git_remote: "https://x-access-token:ghs_kiUBq39QrAlnG6IaeAcTcXhllzqpOV4LDB3e@github.com/viash-hub/biobox"
|
||||
git_commit: "d86bd5cf62104af02caa852aacd352b1aa97ed60"
|
||||
git_remote: "https://x-access-token:ghs_EwAUAMYJ0K4VBHlAEMs4ZP2OyQYqJM0PSfEO@github.com/viash-hub/biobox"
|
||||
git_tag: "v0.2.0-29-gd86bd5c"
|
||||
package_config:
|
||||
name: "biobox"
|
||||
version: "v0.2.0"
|
||||
version: "v0.3.0"
|
||||
description: "A collection of bioinformatics tools for working with sequence data.\n"
|
||||
info: null
|
||||
viash_version: "0.9.0"
|
||||
@@ -432,7 +433,7 @@ package_config:
|
||||
- ".requirements.commands := ['ps']\n"
|
||||
- ".engines += { type: \"native\" }"
|
||||
- ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v0.2.0'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v0.3.0'"
|
||||
keywords:
|
||||
- "bioinformatics"
|
||||
- "modules"
|
||||
@@ -1,4 +1,4 @@
|
||||
// bcl_convert v0.2.0
|
||||
// bcl_convert v0.3.0
|
||||
//
|
||||
// This wrapper script is auto-generated by viash 0.9.0 and is thus a derivative
|
||||
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
|
||||
@@ -2809,7 +2809,7 @@ meta = [
|
||||
"resources_dir": moduleDir.toRealPath().normalize(),
|
||||
"config": processConfig(readJsonBlob('''{
|
||||
"name" : "bcl_convert",
|
||||
"version" : "v0.2.0",
|
||||
"version" : "v0.3.0",
|
||||
"authors" : [
|
||||
{
|
||||
"name" : "Toni Verbeiren",
|
||||
@@ -3289,7 +3289,7 @@ meta = [
|
||||
"id" : "docker",
|
||||
"image" : "debian:trixie-slim",
|
||||
"target_registry" : "images.viash-hub.com",
|
||||
"target_tag" : "v0.2.0",
|
||||
"target_tag" : "v0.3.0",
|
||||
"namespace_separator" : "/",
|
||||
"setup" : [
|
||||
{
|
||||
@@ -3329,12 +3329,13 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "target/nextflow/bcl_convert",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "7e530218844c373048bc33de58f021b6460642e5",
|
||||
"git_remote" : "https://x-access-token:ghs_kiUBq39QrAlnG6IaeAcTcXhllzqpOV4LDB3e@github.com/viash-hub/biobox"
|
||||
"git_commit" : "d86bd5cf62104af02caa852aacd352b1aa97ed60",
|
||||
"git_remote" : "https://x-access-token:ghs_EwAUAMYJ0K4VBHlAEMs4ZP2OyQYqJM0PSfEO@github.com/viash-hub/biobox",
|
||||
"git_tag" : "v0.2.0-29-gd86bd5c"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "biobox",
|
||||
"version" : "v0.2.0",
|
||||
"version" : "v0.3.0",
|
||||
"description" : "A collection of bioinformatics tools for working with sequence data.\n",
|
||||
"viash_version" : "0.9.0",
|
||||
"source" : "src",
|
||||
@@ -3343,7 +3344,7 @@ meta = [
|
||||
".requirements.commands := ['ps']\n",
|
||||
".engines += { type: \\"native\\" }",
|
||||
".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'",
|
||||
".engines[.type == 'docker'].target_tag := 'v0.2.0'"
|
||||
".engines[.type == 'docker'].target_tag := 'v0.3.0'"
|
||||
],
|
||||
"keywords" : [
|
||||
"bioinformatics",
|
||||
@@ -3815,7 +3816,7 @@ meta["defaults"] = [
|
||||
"container" : {
|
||||
"registry" : "images.viash-hub.com",
|
||||
"image" : "vsh/biobox/bcl_convert",
|
||||
"tag" : "v0.2.0"
|
||||
"tag" : "v0.3.0"
|
||||
},
|
||||
"tag" : "$id"
|
||||
}'''),
|
||||
@@ -2,7 +2,7 @@ manifest {
|
||||
name = 'bcl_convert'
|
||||
mainScript = 'main.nf'
|
||||
nextflowVersion = '!>=20.12.1-edge'
|
||||
version = 'v0.2.0'
|
||||
version = 'v0.3.0'
|
||||
description = 'Convert bcl files to fastq files using bcl-convert.\nInformation about upgrading from bcl2fastq via\n[Upgrading from bcl2fastq to BCL Convert](https://emea.support.illumina.com/bulletins/2020/10/upgrading-from-bcl2fastq-to-bcl-convert.html)\nand [BCL Convert Compatible Products](https://support.illumina.com/sequencing/sequencing_software/bcl-convert/compatibility.html)\n'
|
||||
author = 'Toni Verbeiren, Dorien Roosen'
|
||||
}
|
||||
@@ -240,7 +240,7 @@
|
||||
"description": "Type: `file`, required, default: `$id.$key.output_directory.output_directory`, example: `fastq_dir`. Output directory containig fastq files",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.output_directory.output_directory`, example: `fastq_dir`. Output directory containig fastq files"
|
||||
,
|
||||
"default": "$id.$key.output_directory.output_directory"
|
||||
"default":"$id.$key.output_directory.output_directory"
|
||||
}
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.reports.reports`, example: `reports_dir`. Reports directory",
|
||||
"help_text": "Type: `file`, default: `$id.$key.reports.reports`, example: `reports_dir`. Reports directory"
|
||||
,
|
||||
"default": "$id.$key.reports.reports"
|
||||
"default":"$id.$key.reports.reports"
|
||||
}
|
||||
|
||||
|
||||
@@ -282,7 +282,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.logs.logs`, example: `logs_dir`. Reports directory",
|
||||
"help_text": "Type: `file`, default: `$id.$key.logs.logs`, example: `logs_dir`. Reports directory"
|
||||
,
|
||||
"default": "$id.$key.logs.logs"
|
||||
"default":"$id.$key.logs.logs"
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: "falco"
|
||||
version: "v0.2.0"
|
||||
version: "v0.3.0"
|
||||
authors:
|
||||
- name: "Toni Verbeiren"
|
||||
roles:
|
||||
@@ -101,7 +101,7 @@ argument_groups:
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "boolean_true"
|
||||
name: "--reverse_complliment"
|
||||
name: "--reverse_complement"
|
||||
alternatives:
|
||||
- "-r"
|
||||
description: "[Falco only] The input is a \nreverse-complement. All modules will\
|
||||
@@ -287,7 +287,7 @@ engines:
|
||||
id: "docker"
|
||||
image: "debian:trixie-slim"
|
||||
target_registry: "images.viash-hub.com"
|
||||
target_tag: "v0.2.0"
|
||||
target_tag: "v0.3.0"
|
||||
namespace_separator: "/"
|
||||
setup:
|
||||
- type: "apt"
|
||||
@@ -317,11 +317,12 @@ build_info:
|
||||
output: "target/nextflow/falco"
|
||||
executable: "target/nextflow/falco/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "7e530218844c373048bc33de58f021b6460642e5"
|
||||
git_remote: "https://x-access-token:ghs_kiUBq39QrAlnG6IaeAcTcXhllzqpOV4LDB3e@github.com/viash-hub/biobox"
|
||||
git_commit: "d86bd5cf62104af02caa852aacd352b1aa97ed60"
|
||||
git_remote: "https://x-access-token:ghs_EwAUAMYJ0K4VBHlAEMs4ZP2OyQYqJM0PSfEO@github.com/viash-hub/biobox"
|
||||
git_tag: "v0.2.0-29-gd86bd5c"
|
||||
package_config:
|
||||
name: "biobox"
|
||||
version: "v0.2.0"
|
||||
version: "v0.3.0"
|
||||
description: "A collection of bioinformatics tools for working with sequence data.\n"
|
||||
info: null
|
||||
viash_version: "0.9.0"
|
||||
@@ -331,7 +332,7 @@ package_config:
|
||||
- ".requirements.commands := ['ps']\n"
|
||||
- ".engines += { type: \"native\" }"
|
||||
- ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v0.2.0'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v0.3.0'"
|
||||
keywords:
|
||||
- "bioinformatics"
|
||||
- "modules"
|
||||
@@ -1,4 +1,4 @@
|
||||
// falco v0.2.0
|
||||
// falco v0.3.0
|
||||
//
|
||||
// This wrapper script is auto-generated by viash 0.9.0 and is thus a derivative
|
||||
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
|
||||
@@ -2808,7 +2808,7 @@ meta = [
|
||||
"resources_dir": moduleDir.toRealPath().normalize(),
|
||||
"config": processConfig(readJsonBlob('''{
|
||||
"name" : "falco",
|
||||
"version" : "v0.2.0",
|
||||
"version" : "v0.3.0",
|
||||
"authors" : [
|
||||
{
|
||||
"name" : "Toni Verbeiren",
|
||||
@@ -2919,7 +2919,7 @@ meta = [
|
||||
},
|
||||
{
|
||||
"type" : "boolean_true",
|
||||
"name" : "--reverse_complliment",
|
||||
"name" : "--reverse_complement",
|
||||
"alternatives" : [
|
||||
"-r"
|
||||
],
|
||||
@@ -3131,7 +3131,7 @@ meta = [
|
||||
"id" : "docker",
|
||||
"image" : "debian:trixie-slim",
|
||||
"target_registry" : "images.viash-hub.com",
|
||||
"target_tag" : "v0.2.0",
|
||||
"target_tag" : "v0.3.0",
|
||||
"namespace_separator" : "/",
|
||||
"setup" : [
|
||||
{
|
||||
@@ -3170,12 +3170,13 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "target/nextflow/falco",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "7e530218844c373048bc33de58f021b6460642e5",
|
||||
"git_remote" : "https://x-access-token:ghs_kiUBq39QrAlnG6IaeAcTcXhllzqpOV4LDB3e@github.com/viash-hub/biobox"
|
||||
"git_commit" : "d86bd5cf62104af02caa852aacd352b1aa97ed60",
|
||||
"git_remote" : "https://x-access-token:ghs_EwAUAMYJ0K4VBHlAEMs4ZP2OyQYqJM0PSfEO@github.com/viash-hub/biobox",
|
||||
"git_tag" : "v0.2.0-29-gd86bd5c"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "biobox",
|
||||
"version" : "v0.2.0",
|
||||
"version" : "v0.3.0",
|
||||
"description" : "A collection of bioinformatics tools for working with sequence data.\n",
|
||||
"viash_version" : "0.9.0",
|
||||
"source" : "src",
|
||||
@@ -3184,7 +3185,7 @@ meta = [
|
||||
".requirements.commands := ['ps']\n",
|
||||
".engines += { type: \\"native\\" }",
|
||||
".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'",
|
||||
".engines[.type == 'docker'].target_tag := 'v0.2.0'"
|
||||
".engines[.type == 'docker'].target_tag := 'v0.3.0'"
|
||||
],
|
||||
"keywords" : [
|
||||
"bioinformatics",
|
||||
@@ -3219,7 +3220,7 @@ $( if [ ! -z ${VIASH_PAR_ADAPTERS+x} ]; then echo "${VIASH_PAR_ADAPTERS}" | sed
|
||||
$( if [ ! -z ${VIASH_PAR_LIMITS+x} ]; then echo "${VIASH_PAR_LIMITS}" | sed "s#'#'\\"'\\"'#g;s#.*#par_limits='&'#" ; else echo "# par_limits="; fi )
|
||||
$( if [ ! -z ${VIASH_PAR_SUBSAMPLE+x} ]; then echo "${VIASH_PAR_SUBSAMPLE}" | sed "s#'#'\\"'\\"'#g;s#.*#par_subsample='&'#" ; else echo "# par_subsample="; fi )
|
||||
$( if [ ! -z ${VIASH_PAR_BISULFITE+x} ]; then echo "${VIASH_PAR_BISULFITE}" | sed "s#'#'\\"'\\"'#g;s#.*#par_bisulfite='&'#" ; else echo "# par_bisulfite="; fi )
|
||||
$( if [ ! -z ${VIASH_PAR_REVERSE_COMPLLIMENT+x} ]; then echo "${VIASH_PAR_REVERSE_COMPLLIMENT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_reverse_complliment='&'#" ; else echo "# par_reverse_complliment="; fi )
|
||||
$( if [ ! -z ${VIASH_PAR_REVERSE_COMPLEMENT+x} ]; then echo "${VIASH_PAR_REVERSE_COMPLEMENT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_reverse_complement='&'#" ; else echo "# par_reverse_complement="; fi )
|
||||
$( if [ ! -z ${VIASH_PAR_OUTDIR+x} ]; then echo "${VIASH_PAR_OUTDIR}" | sed "s#'#'\\"'\\"'#g;s#.*#par_outdir='&'#" ; else echo "# par_outdir="; fi )
|
||||
$( if [ ! -z ${VIASH_PAR_FORMAT+x} ]; then echo "${VIASH_PAR_FORMAT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_format='&'#" ; else echo "# par_format="; fi )
|
||||
$( if [ ! -z ${VIASH_PAR_DATA_FILENAME+x} ]; then echo "${VIASH_PAR_DATA_FILENAME}" | sed "s#'#'\\"'\\"'#g;s#.*#par_data_filename='&'#" ; else echo "# par_data_filename="; fi )
|
||||
@@ -3251,7 +3252,7 @@ set -eo pipefail
|
||||
|
||||
[[ "\\$par_nogroup" == "false" ]] && unset par_nogroup
|
||||
[[ "\\$par_bisulfite" == "false" ]] && unset par_bisulfite
|
||||
[[ "\\$par_reverse_compliment" == "false" ]] && unset par_reverse_compliment
|
||||
[[ "\\$par_reverse_complement" == "false" ]] && unset par_reverse_complement
|
||||
|
||||
IFS=";" read -ra input <<< \\$par_input
|
||||
|
||||
@@ -3262,7 +3263,7 @@ IFS=";" read -ra input <<< \\$par_input
|
||||
\\${par_limits:+--limits "\\$par_limits"} \\\\
|
||||
\\${par_subsample:+-subsample \\$par_subsample} \\\\
|
||||
\\${par_bisulfite:+-bisulfite} \\\\
|
||||
\\${par_reverse_compliment:+-reverse-compliment} \\\\
|
||||
\\${par_reverse_complement:+-reverse-complement} \\\\
|
||||
\\${par_outdir:+--outdir "\\$par_outdir"} \\\\
|
||||
\\${par_format:+--format "\\$par_format"} \\\\
|
||||
\\${par_data_filename:+-data-filename "\\$par_data_filename"} \\\\
|
||||
@@ -3630,7 +3631,7 @@ meta["defaults"] = [
|
||||
"container" : {
|
||||
"registry" : "images.viash-hub.com",
|
||||
"image" : "vsh/biobox/falco",
|
||||
"tag" : "v0.2.0"
|
||||
"tag" : "v0.3.0"
|
||||
},
|
||||
"tag" : "$id"
|
||||
}'''),
|
||||
@@ -2,7 +2,7 @@ manifest {
|
||||
name = 'falco'
|
||||
mainScript = 'main.nf'
|
||||
nextflowVersion = '!>=20.12.1-edge'
|
||||
version = 'v0.2.0'
|
||||
version = 'v0.3.0'
|
||||
description = 'A C++ drop-in replacement of FastQC to assess the quality of sequence read data'
|
||||
author = 'Toni Verbeiren'
|
||||
}
|
||||
@@ -40,7 +40,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Disable grouping of bases for reads \u003e50bp",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Disable grouping of bases for reads \u003e50bp. \nAll reports will show data for every base in \nthe read. WARNING: When using this option, \nyour plots may end up a ridiculous size. You \nhave been warned!\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -91,18 +91,18 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. [Falco only] reads are whole genome \nbisulfite sequencing, and more Ts and fewer \nCs are therefore expected and will be \naccounted for in base content",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. [Falco only] reads are whole genome \nbisulfite sequencing, and more Ts and fewer \nCs are therefore expected and will be \naccounted for in base content.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"reverse_complliment": {
|
||||
"reverse_complement": {
|
||||
"type":
|
||||
"boolean",
|
||||
"description": "Type: `boolean_true`, default: `false`. [Falco only] The input is a \nreverse-complement",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. [Falco only] The input is a \nreverse-complement. All modules will be \ntested by swapping A/T and C/G\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"description": "Type: `file`, required, default: `$id.$key.outdir.outdir`, example: `output`. Create all output files in the specified \noutput directory",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.outdir.outdir`, example: `output`. Create all output files in the specified \noutput directory. FALCO-SPECIFIC: If the \ndirectory does not exists, the program will \ncreate it.\n"
|
||||
,
|
||||
"default": "$id.$key.outdir.outdir"
|
||||
"default":"$id.$key.outdir.outdir"
|
||||
}
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.data_filename.data_filename`. [Falco only] Specify filename for FastQC \ndata output (TXT)",
|
||||
"help_text": "Type: `file`, default: `$id.$key.data_filename.data_filename`. [Falco only] Specify filename for FastQC \ndata output (TXT). If not specified, it will \nbe called fastq_data.txt in either the input \nfile\u0027s directory or the one specified in the \n--output flag. Only available when running \nfalco with a single input.\n"
|
||||
,
|
||||
"default": "$id.$key.data_filename.data_filename"
|
||||
"default":"$id.$key.data_filename.data_filename"
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.report_filename.report_filename`. [Falco only] Specify filename for FastQC \nreport output (HTML)",
|
||||
"help_text": "Type: `file`, default: `$id.$key.report_filename.report_filename`. [Falco only] Specify filename for FastQC \nreport output (HTML). If not specified, it \nwill be called fastq_report.html in either \nthe input file\u0027s directory or the one \nspecified in the --output flag. Only \navailable when running falco with a single \ninput.\n"
|
||||
,
|
||||
"default": "$id.$key.report_filename.report_filename"
|
||||
"default":"$id.$key.report_filename.report_filename"
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.summary_filename.summary_filename`. [Falco only] Specify filename for the short \nsummary output (TXT)",
|
||||
"help_text": "Type: `file`, default: `$id.$key.summary_filename.summary_filename`. [Falco only] Specify filename for the short \nsummary output (TXT). If not specified, it \nwill be called fastq_report.html in either \nthe input file\u0027s directory or the one \nspecified in the --output flag. Only \navailable when running falco with a single \ninput.\n"
|
||||
,
|
||||
"default": "$id.$key.summary_filename.summary_filename"
|
||||
"default":"$id.$key.summary_filename.summary_filename"
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: "multiqc"
|
||||
version: "v0.2.0"
|
||||
version: "v0.3.0"
|
||||
authors:
|
||||
- name: "Dorien Roosen"
|
||||
roles:
|
||||
@@ -433,7 +433,7 @@ engines:
|
||||
id: "docker"
|
||||
image: "quay.io/biocontainers/multiqc:1.21--pyhdfd78af_0"
|
||||
target_registry: "images.viash-hub.com"
|
||||
target_tag: "v0.2.0"
|
||||
target_tag: "v0.3.0"
|
||||
namespace_separator: "/"
|
||||
setup:
|
||||
- type: "docker"
|
||||
@@ -456,11 +456,12 @@ build_info:
|
||||
output: "target/nextflow/multiqc"
|
||||
executable: "target/nextflow/multiqc/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "7e530218844c373048bc33de58f021b6460642e5"
|
||||
git_remote: "https://x-access-token:ghs_kiUBq39QrAlnG6IaeAcTcXhllzqpOV4LDB3e@github.com/viash-hub/biobox"
|
||||
git_commit: "d86bd5cf62104af02caa852aacd352b1aa97ed60"
|
||||
git_remote: "https://x-access-token:ghs_EwAUAMYJ0K4VBHlAEMs4ZP2OyQYqJM0PSfEO@github.com/viash-hub/biobox"
|
||||
git_tag: "v0.2.0-29-gd86bd5c"
|
||||
package_config:
|
||||
name: "biobox"
|
||||
version: "v0.2.0"
|
||||
version: "v0.3.0"
|
||||
description: "A collection of bioinformatics tools for working with sequence data.\n"
|
||||
info: null
|
||||
viash_version: "0.9.0"
|
||||
@@ -470,7 +471,7 @@ package_config:
|
||||
- ".requirements.commands := ['ps']\n"
|
||||
- ".engines += { type: \"native\" }"
|
||||
- ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v0.2.0'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v0.3.0'"
|
||||
keywords:
|
||||
- "bioinformatics"
|
||||
- "modules"
|
||||
@@ -1,4 +1,4 @@
|
||||
// multiqc v0.2.0
|
||||
// multiqc v0.3.0
|
||||
//
|
||||
// This wrapper script is auto-generated by viash 0.9.0 and is thus a derivative
|
||||
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
|
||||
@@ -2808,7 +2808,7 @@ meta = [
|
||||
"resources_dir": moduleDir.toRealPath().normalize(),
|
||||
"config": processConfig(readJsonBlob('''{
|
||||
"name" : "multiqc",
|
||||
"version" : "v0.2.0",
|
||||
"version" : "v0.3.0",
|
||||
"authors" : [
|
||||
{
|
||||
"name" : "Dorien Roosen",
|
||||
@@ -3335,7 +3335,7 @@ meta = [
|
||||
"id" : "docker",
|
||||
"image" : "quay.io/biocontainers/multiqc:1.21--pyhdfd78af_0",
|
||||
"target_registry" : "images.viash-hub.com",
|
||||
"target_tag" : "v0.2.0",
|
||||
"target_tag" : "v0.3.0",
|
||||
"namespace_separator" : "/",
|
||||
"setup" : [
|
||||
{
|
||||
@@ -3366,12 +3366,13 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "target/nextflow/multiqc",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "7e530218844c373048bc33de58f021b6460642e5",
|
||||
"git_remote" : "https://x-access-token:ghs_kiUBq39QrAlnG6IaeAcTcXhllzqpOV4LDB3e@github.com/viash-hub/biobox"
|
||||
"git_commit" : "d86bd5cf62104af02caa852aacd352b1aa97ed60",
|
||||
"git_remote" : "https://x-access-token:ghs_EwAUAMYJ0K4VBHlAEMs4ZP2OyQYqJM0PSfEO@github.com/viash-hub/biobox",
|
||||
"git_tag" : "v0.2.0-29-gd86bd5c"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "biobox",
|
||||
"version" : "v0.2.0",
|
||||
"version" : "v0.3.0",
|
||||
"description" : "A collection of bioinformatics tools for working with sequence data.\n",
|
||||
"viash_version" : "0.9.0",
|
||||
"source" : "src",
|
||||
@@ -3380,7 +3381,7 @@ meta = [
|
||||
".requirements.commands := ['ps']\n",
|
||||
".engines += { type: \\"native\\" }",
|
||||
".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'",
|
||||
".engines[.type == 'docker'].target_tag := 'v0.2.0'"
|
||||
".engines[.type == 'docker'].target_tag := 'v0.3.0'"
|
||||
],
|
||||
"keywords" : [
|
||||
"bioinformatics",
|
||||
@@ -3961,7 +3962,7 @@ meta["defaults"] = [
|
||||
"container" : {
|
||||
"registry" : "images.viash-hub.com",
|
||||
"image" : "vsh/biobox/multiqc",
|
||||
"tag" : "v0.2.0"
|
||||
"tag" : "v0.3.0"
|
||||
},
|
||||
"tag" : "$id"
|
||||
}'''),
|
||||
@@ -2,7 +2,7 @@ manifest {
|
||||
name = 'multiqc'
|
||||
mainScript = 'main.nf'
|
||||
nextflowVersion = '!>=20.12.1-edge'
|
||||
version = 'v0.2.0'
|
||||
version = 'v0.3.0'
|
||||
description = 'MultiQC aggregates results from bioinformatics analyses across many samples into a single report.\nIt searches a given directory for analysis logs and compiles a HTML report. It\'s a general use tool, perfect for summarising the output from numerous bioinformatics tools.\n'
|
||||
author = 'Dorien Roosen'
|
||||
}
|
||||
@@ -40,7 +40,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.output_report.html`, example: `multiqc_report.html`. Filepath of the generated report",
|
||||
"help_text": "Type: `file`, default: `$id.$key.output_report.html`, example: `multiqc_report.html`. Filepath of the generated report.\n"
|
||||
,
|
||||
"default": "$id.$key.output_report.html"
|
||||
"default":"$id.$key.output_report.html"
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.output_data.output_data`, example: `multiqc_data`. Output directory for parsed data files",
|
||||
"help_text": "Type: `file`, default: `$id.$key.output_data.output_data`, example: `multiqc_data`. Output directory for parsed data files. If not provided, parsed data will not be published.\n"
|
||||
,
|
||||
"default": "$id.$key.output_data.output_data"
|
||||
"default":"$id.$key.output_data.output_data"
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.output_plots.output_plots`, example: `multiqc_plots`. Output directory for generated plots",
|
||||
"help_text": "Type: `file`, default: `$id.$key.output_plots.output_plots`, example: `multiqc_plots`. Output directory for generated plots. If not provided, plots will not be published.\n"
|
||||
,
|
||||
"default": "$id.$key.output_plots.output_plots"
|
||||
"default":"$id.$key.output_plots.output_plots"
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Ignore symlinked directories and files",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Ignore symlinked directories and files"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Prepend directory to sample names to avoid clashing filenames",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Prepend directory to sample names to avoid clashing filenames"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Do not clean the sample names (leave as full file name)",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Do not clean the sample names (leave as full file name)"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Use the log filename as the sample name",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Use the log filename as the sample name"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Add analysis of how long MultiQC takes to run to the report\n",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Add analysis of how long MultiQC takes to run to the report\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Increase output verbosity",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Increase output verbosity.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Only show log warnings\n",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Only show log warnings\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Don\u0027t catch exceptions, run additional code checks to help development",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Don\u0027t catch exceptions, run additional code checks to help development.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -323,7 +323,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Development mode",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Development mode. Do not compress and minimise JS, export uncompressed plot data.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -334,7 +334,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Require all explicitly requested modules to have log files",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Require all explicitly requested modules to have log files. If not, MultiQC will exit with an error.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Don\u0027t upload generated report to MegaQC, even if MegaQC options are found",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Don\u0027t upload generated report to MegaQC, even if MegaQC options are found.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -356,7 +356,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Disable coloured log output",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Disable coloured log output.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Use only flat plots (static images)",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Use only flat plots (static images).\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -398,7 +398,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Use only interactive plots (in-browser Javascript)",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Use only interactive plots (in-browser Javascript).\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -409,7 +409,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Force the parsed data directory to be created",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Force the parsed data directory to be created.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -420,7 +420,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Prevent the parsed data directory from being created",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Prevent the parsed data directory from being created.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -431,7 +431,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Compress the data directory",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Compress the data directory.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -454,7 +454,7 @@
|
||||
"description": "Type: `boolean_true`, default: `false`. Creates PDF report with the \u0027simple\u0027 template",
|
||||
"help_text": "Type: `boolean_true`, default: `false`. Creates PDF report with the \u0027simple\u0027 template. Requires Pandoc to be installed.\n"
|
||||
,
|
||||
"default": "False"
|
||||
"default":false
|
||||
}
|
||||
|
||||
|
||||
@@ -141,9 +141,9 @@ build_info:
|
||||
output: "target/executable/io/interop_summary_to_csv"
|
||||
executable: "target/executable/io/interop_summary_to_csv/interop_summary_to_csv"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "5cb13230bf682321226addce896a3015e8864913"
|
||||
git_remote: "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-3-g5cb1323"
|
||||
git_commit: "6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
git_remote: "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-5-g6e6be28"
|
||||
package_config:
|
||||
name: "demultiplex"
|
||||
version: "main"
|
||||
|
||||
@@ -470,9 +470,9 @@ tar -C /tmp/ --no-same-owner --no-same-permissions -xvf /tmp/interop.tar.gz && \
|
||||
mv /tmp/interop-1.3.1-Linux-GNU/bin/index-summary /tmp/interop-1.3.1-Linux-GNU/bin/summary /usr/local/bin/
|
||||
|
||||
LABEL org.opencontainers.image.description="Companion container for running component io interop_summary_to_csv"
|
||||
LABEL org.opencontainers.image.created="2024-11-06T17:42:24Z"
|
||||
LABEL org.opencontainers.image.created="2024-12-05T10:21:34Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/viash-hub/demultiplex"
|
||||
LABEL org.opencontainers.image.revision="5cb13230bf682321226addce896a3015e8864913"
|
||||
LABEL org.opencontainers.image.revision="6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
LABEL org.opencontainers.image.version="main"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -148,9 +148,9 @@ build_info:
|
||||
output: "target/executable/io/untar"
|
||||
executable: "target/executable/io/untar/untar"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "5cb13230bf682321226addce896a3015e8864913"
|
||||
git_remote: "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-3-g5cb1323"
|
||||
git_commit: "6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
git_remote: "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-5-g6e6be28"
|
||||
package_config:
|
||||
name: "demultiplex"
|
||||
version: "main"
|
||||
|
||||
@@ -476,9 +476,9 @@ RUN apt-get update && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
LABEL org.opencontainers.image.description="Companion container for running component io untar"
|
||||
LABEL org.opencontainers.image.created="2024-11-06T17:42:24Z"
|
||||
LABEL org.opencontainers.image.created="2024-12-05T10:21:34Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/viash-hub/demultiplex"
|
||||
LABEL org.opencontainers.image.revision="5cb13230bf682321226addce896a3015e8864913"
|
||||
LABEL org.opencontainers.image.revision="6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
LABEL org.opencontainers.image.version="main"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -19,7 +19,7 @@ argument_groups:
|
||||
create_parent: true
|
||||
required: true
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple: true
|
||||
multiple_sep: ";"
|
||||
- type: "file"
|
||||
name: "--reverse_input"
|
||||
@@ -28,7 +28,7 @@ argument_groups:
|
||||
create_parent: true
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple: true
|
||||
multiple_sep: ";"
|
||||
- name: "Output arguments"
|
||||
arguments:
|
||||
@@ -139,9 +139,9 @@ build_info:
|
||||
output: "target/nextflow/dataflow/combine_samples"
|
||||
executable: "target/nextflow/dataflow/combine_samples/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "5cb13230bf682321226addce896a3015e8864913"
|
||||
git_remote: "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-3-g5cb1323"
|
||||
git_commit: "6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
git_remote: "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-5-g6e6be28"
|
||||
package_config:
|
||||
name: "demultiplex"
|
||||
version: "main"
|
||||
|
||||
@@ -2827,7 +2827,7 @@ meta = [
|
||||
"create_parent" : true,
|
||||
"required" : true,
|
||||
"direction" : "input",
|
||||
"multiple" : false,
|
||||
"multiple" : true,
|
||||
"multiple_sep" : ";"
|
||||
},
|
||||
{
|
||||
@@ -2837,7 +2837,7 @@ meta = [
|
||||
"create_parent" : true,
|
||||
"required" : false,
|
||||
"direction" : "input",
|
||||
"multiple" : false,
|
||||
"multiple" : true,
|
||||
"multiple_sep" : ";"
|
||||
}
|
||||
]
|
||||
@@ -2972,9 +2972,9 @@ meta = [
|
||||
"engine" : "native|native",
|
||||
"output" : "target/nextflow/dataflow/combine_samples",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "5cb13230bf682321226addce896a3015e8864913",
|
||||
"git_remote" : "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-3-g5cb1323"
|
||||
"git_commit" : "6e6be28b85ab619214ae05a017a33498c0dc8890",
|
||||
"git_remote" : "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-5-g6e6be28"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "demultiplex",
|
||||
@@ -3031,8 +3031,8 @@ workflow run_wf {
|
||||
| groupTuple(by: 0, sort: "hash")
|
||||
| map {run_id, states ->
|
||||
// Gather the following state for all samples
|
||||
def forward_fastqs = states.collect{it.forward_input}
|
||||
def reverse_fastqs = states.collect{it.reverse_input}.findAll{it != null}
|
||||
def forward_fastqs = states.collect{it.forward_input}.flatten()
|
||||
def reverse_fastqs = states.collect{it.reverse_input}.findAll{it != null}.flatten()
|
||||
|
||||
def resultState = [
|
||||
"output_forward": forward_fastqs,
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
"forward_input": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`, required. ",
|
||||
"help_text": "Type: `file`, required. "
|
||||
"description": "Type: List of `file`, required, multiple_sep: `\";\"`. ",
|
||||
"help_text": "Type: List of `file`, required, multiple_sep: `\";\"`. "
|
||||
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
"reverse_input": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`. ",
|
||||
"help_text": "Type: `file`. "
|
||||
"description": "Type: List of `file`, multiple_sep: `\";\"`. ",
|
||||
"help_text": "Type: List of `file`, multiple_sep: `\";\"`. "
|
||||
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
"description": "Type: List of `file`, required, default: `$id.$key.output_forward_*.output_forward_*`, multiple_sep: `\";\"`. ",
|
||||
"help_text": "Type: List of `file`, required, default: `$id.$key.output_forward_*.output_forward_*`, multiple_sep: `\";\"`. "
|
||||
,
|
||||
"default": "$id.$key.output_forward_*.output_forward_*"
|
||||
"default":"$id.$key.output_forward_*.output_forward_*"
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
"description": "Type: List of `file`, default: `$id.$key.output_reverse_*.output_reverse_*`, multiple_sep: `\";\"`. ",
|
||||
"help_text": "Type: List of `file`, default: `$id.$key.output_reverse_*.output_reverse_*`, multiple_sep: `\";\"`. "
|
||||
,
|
||||
"default": "$id.$key.output_reverse_*.output_reverse_*"
|
||||
"default":"$id.$key.output_reverse_*.output_reverse_*"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ argument_groups:
|
||||
create_parent: true
|
||||
required: true
|
||||
direction: "output"
|
||||
multiple: false
|
||||
multiple: true
|
||||
multiple_sep: ";"
|
||||
- type: "file"
|
||||
name: "--fastq_reverse"
|
||||
@@ -42,7 +42,7 @@ argument_groups:
|
||||
create_parent: true
|
||||
required: false
|
||||
direction: "output"
|
||||
multiple: false
|
||||
multiple: true
|
||||
multiple_sep: ";"
|
||||
resources:
|
||||
- type: "nextflow_script"
|
||||
@@ -133,9 +133,9 @@ build_info:
|
||||
output: "target/nextflow/dataflow/gather_fastqs_and_validate"
|
||||
executable: "target/nextflow/dataflow/gather_fastqs_and_validate/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "5cb13230bf682321226addce896a3015e8864913"
|
||||
git_remote: "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-3-g5cb1323"
|
||||
git_commit: "6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
git_remote: "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-5-g6e6be28"
|
||||
package_config:
|
||||
name: "demultiplex"
|
||||
version: "main"
|
||||
|
||||
@@ -2845,7 +2845,7 @@ meta = [
|
||||
"create_parent" : true,
|
||||
"required" : true,
|
||||
"direction" : "output",
|
||||
"multiple" : false,
|
||||
"multiple" : true,
|
||||
"multiple_sep" : ";"
|
||||
},
|
||||
{
|
||||
@@ -2855,7 +2855,7 @@ meta = [
|
||||
"create_parent" : true,
|
||||
"required" : false,
|
||||
"direction" : "output",
|
||||
"multiple" : false,
|
||||
"multiple" : true,
|
||||
"multiple_sep" : ";"
|
||||
}
|
||||
]
|
||||
@@ -2965,9 +2965,9 @@ meta = [
|
||||
"engine" : "native|native",
|
||||
"output" : "target/nextflow/dataflow/gather_fastqs_and_validate",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "5cb13230bf682321226addce896a3015e8864913",
|
||||
"git_remote" : "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-3-g5cb1323"
|
||||
"git_commit" : "6e6be28b85ab619214ae05a017a33498c0dc8890",
|
||||
"git_remote" : "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-5-g6e6be28"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "demultiplex",
|
||||
@@ -3027,9 +3027,11 @@ workflow run_wf {
|
||||
def original_id = id
|
||||
|
||||
// Parse sample sheet for sample IDs
|
||||
println "Processing run information file ${sample_sheet}"
|
||||
csv_lines = sample_sheet.splitCsv(header: false, sep: ',')
|
||||
csv_lines.any { csv_items ->
|
||||
if (csv_items.isEmpty()) {
|
||||
// skip empty line
|
||||
return
|
||||
}
|
||||
def possible_header = csv_items[0]
|
||||
@@ -3037,22 +3039,40 @@ workflow run_wf {
|
||||
if (header) {
|
||||
if (start_parsing) {
|
||||
// Stop parsing when encountering the next header
|
||||
println "Encountered next header '[${start_parsing}]', stopping parsing."
|
||||
return true
|
||||
}
|
||||
if (header == "Data") {
|
||||
// [Data] for illumina
|
||||
// [Samples] for Element Biosciences
|
||||
if (header in ["Data", "Samples"]) {
|
||||
println "Found header [${header}], start parsing."
|
||||
start_parsing = true
|
||||
return
|
||||
}
|
||||
}
|
||||
if (start_parsing) {
|
||||
if ( !sample_id_column_index ) {
|
||||
sample_id_column_index = csv_items.findIndexValues{it == "Sample_ID"}
|
||||
assert sample_id_column_index != -1:
|
||||
"Could not find column 'Sample_ID' in sample sheet!"
|
||||
if ( sample_id_column_index == null) {
|
||||
println "Looking for sample name column."
|
||||
sample_id_column_index = csv_items.findIndexValues{it == "Sample_ID" || it == "SampleName"}
|
||||
assert (!sample_id_column_index.isEmpty()):
|
||||
"Could not find column 'Sample_ID' (Illumina) or 'SampleName' " +
|
||||
"(Element Biosciences) in run information! Found: ${sample_id_column_index}"
|
||||
assert sample_id_column_index.size() == 1, "Expected run information file to contain " +
|
||||
"a column 'Sample_ID' or 'SampleName', not both. Found: ${sample_id_column_index}"
|
||||
sample_id_column_index = sample_id_column_index[0]
|
||||
println "Found sample names column '${csv_items[sample_id_column_index]}'."
|
||||
return
|
||||
}
|
||||
samples += csv_items[sample_id_column_index]
|
||||
}
|
||||
// This return is important! (If 'true' is returned, the parsing stops.)
|
||||
return
|
||||
}
|
||||
assert start_parsing:
|
||||
"Sample information file does not contain [Data] or [Samples] header!"
|
||||
assert samples.size() > 1:
|
||||
"Sample information file does not seem to contain any information about the samples!"
|
||||
println "Finished processing run information file, found samples: ${samples}."
|
||||
println "Looking for fastq files in ${state.input}."
|
||||
def allfastqs = state.input.listFiles().findAll{it.isFile() && it.name ==~ /^.+\.fastq.gz$/}
|
||||
println "Found ${allfastqs.size()} fastq files, matching them to the following samples: ${samples}."
|
||||
@@ -3061,17 +3081,15 @@ workflow run_wf {
|
||||
def reverse_regex = ~/^${sample_id}_S(\d+)_(L(\d+)_)?R2_(\d+)\.fastq\.gz$/
|
||||
def forward_fastq = state.input.listFiles().findAll{it.isFile() && it.name ==~ forward_regex}
|
||||
def reverse_fastq = state.input.listFiles().findAll{it.isFile() && it.name ==~ reverse_regex}
|
||||
assert forward_fastq : "No forward fastq files were found for sample ${sample_id}"
|
||||
assert forward_fastq.size() < 2:
|
||||
"Found multiple forward fastq files corresponding to sample ${sample_id}: ${forward_fastq}"
|
||||
assert reverse_fastq.size() < 2:
|
||||
"Found multiple reverse fastq files corresponding to sample ${sample_id}: ${reverse_fastq}."
|
||||
assert !forward_fastq.isEmpty():
|
||||
"Expected a forward fastq file to have been created correspondig to sample ${sample_id}."
|
||||
// TODO: if one sample had reverse reads, the others must as well.
|
||||
reverse_fastq = !reverse_fastq.isEmpty() ? reverse_fastq[0] : null
|
||||
assert forward_fastq && !forward_fastq.isEmpty(): "No forward fastq files were found for sample ${sample_id}. " +
|
||||
"All fastq files in directory: ${allfastqs.collect{it.name}}"
|
||||
assert (reverse_fastq.isEmpty() || (forward_fastq.size() == reverse_fastq.size())):
|
||||
"Expected equal number of forward and reverse fastq files for sample ${sample_id}. " +
|
||||
"Found forward: ${forward_fastq} and reverse: ${reverse_fastq}."
|
||||
println "Found ${forward_fastq.size()} forward and ${reverse_fastq.size()} reverse " +
|
||||
"fastq files for sample ${sample_id}"
|
||||
def fastqs_state = [
|
||||
"fastq_forward": forward_fastq[0],
|
||||
"fastq_forward": forward_fastq,
|
||||
"fastq_reverse": reverse_fastq,
|
||||
"_meta": [ "join_id": original_id ],
|
||||
]
|
||||
|
||||
@@ -47,10 +47,10 @@
|
||||
"fastq_forward": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`, required, default: `$id.$key.fastq_forward.fastq_forward`. ",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.fastq_forward.fastq_forward`. "
|
||||
"description": "Type: List of `file`, required, default: `$id.$key.fastq_forward_*.fastq_forward_*`, multiple_sep: `\";\"`. ",
|
||||
"help_text": "Type: List of `file`, required, default: `$id.$key.fastq_forward_*.fastq_forward_*`, multiple_sep: `\";\"`. "
|
||||
,
|
||||
"default": "$id.$key.fastq_forward.fastq_forward"
|
||||
"default":"$id.$key.fastq_forward_*.fastq_forward_*"
|
||||
}
|
||||
|
||||
|
||||
@@ -58,10 +58,10 @@
|
||||
"fastq_reverse": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`, default: `$id.$key.fastq_reverse.fastq_reverse`. ",
|
||||
"help_text": "Type: `file`, default: `$id.$key.fastq_reverse.fastq_reverse`. "
|
||||
"description": "Type: List of `file`, default: `$id.$key.fastq_reverse_*.fastq_reverse_*`, multiple_sep: `\";\"`. ",
|
||||
"help_text": "Type: List of `file`, default: `$id.$key.fastq_reverse_*.fastq_reverse_*`, multiple_sep: `\";\"`. "
|
||||
,
|
||||
"default": "$id.$key.fastq_reverse.fastq_reverse"
|
||||
"default":"$id.$key.fastq_reverse_*.fastq_reverse_*"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,9 +14,11 @@ argument_groups:
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "file"
|
||||
name: "--sample_sheet"
|
||||
description: "Sample sheet as input for BCL Convert. If not specified,\nwill try\
|
||||
\ to autodetect the sample sheet in the input directory\n"
|
||||
name: "--run_information"
|
||||
description: "CSV file containing sample information, which will be used as \n\
|
||||
input for the demultiplexer. Canonically called 'SampleSheet.csv' (Illumina)\n\
|
||||
or 'RunManifest.csv' (Element Biosciences). If not specified,\nwill try to autodetect\
|
||||
\ the sample sheet in the input directory.\nRequires --demultiplexer to be set.\n"
|
||||
info: null
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
@@ -24,6 +26,19 @@ argument_groups:
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--demultiplexer"
|
||||
description: "Demultiplexer to use, choice depends on the provider\nof the instrument\
|
||||
\ that was used to generate the data.\nWhen not using --sample_sheet, specifying\
|
||||
\ this argument is not\nrequired.\n"
|
||||
info: null
|
||||
required: false
|
||||
choices:
|
||||
- "bases2fastq"
|
||||
- "bclconvert"
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- name: "Output arguments"
|
||||
arguments:
|
||||
- type: "file"
|
||||
@@ -70,7 +85,11 @@ test_resources:
|
||||
- type: "nextflow_script"
|
||||
path: "test.nf"
|
||||
is_executable: true
|
||||
entrypoint: "test_wf"
|
||||
entrypoint: "test_illumina"
|
||||
- type: "nextflow_script"
|
||||
path: "test.nf"
|
||||
is_executable: true
|
||||
entrypoint: "test_bases2fastq"
|
||||
info: null
|
||||
status: "enabled"
|
||||
requirements:
|
||||
@@ -93,22 +112,27 @@ dependencies:
|
||||
repository:
|
||||
type: "vsh"
|
||||
repo: "biobox"
|
||||
tag: "v0.2.0"
|
||||
tag: "v0.3.0"
|
||||
- name: "bases2fastq"
|
||||
repository:
|
||||
type: "vsh"
|
||||
repo: "biobox"
|
||||
tag: "v0.3.0"
|
||||
- name: "falco"
|
||||
repository:
|
||||
type: "vsh"
|
||||
repo: "biobox"
|
||||
tag: "v0.2.0"
|
||||
tag: "v0.3.0"
|
||||
- name: "multiqc"
|
||||
repository:
|
||||
type: "vsh"
|
||||
repo: "biobox"
|
||||
tag: "v0.2.0"
|
||||
tag: "v0.3.0"
|
||||
repositories:
|
||||
- type: "vsh"
|
||||
name: "bb"
|
||||
repo: "biobox"
|
||||
tag: "v0.2.0"
|
||||
tag: "v0.3.0"
|
||||
license: "MIT"
|
||||
links:
|
||||
repository: "https://github.com/viash-hub/demultiplex"
|
||||
@@ -186,17 +210,18 @@ build_info:
|
||||
output: "target/nextflow/demultiplex"
|
||||
executable: "target/nextflow/demultiplex/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "5cb13230bf682321226addce896a3015e8864913"
|
||||
git_remote: "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-3-g5cb1323"
|
||||
git_commit: "6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
git_remote: "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-5-g6e6be28"
|
||||
dependencies:
|
||||
- "target/nextflow/io/untar"
|
||||
- "target/nextflow/dataflow/gather_fastqs_and_validate"
|
||||
- "target/nextflow/io/interop_summary_to_csv"
|
||||
- "target/nextflow/dataflow/combine_samples"
|
||||
- "target/dependencies/vsh/vsh/biobox/v0.2.0/nextflow/bcl_convert"
|
||||
- "target/dependencies/vsh/vsh/biobox/v0.2.0/nextflow/falco"
|
||||
- "target/dependencies/vsh/vsh/biobox/v0.2.0/nextflow/multiqc"
|
||||
- "target/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/bcl_convert"
|
||||
- "target/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/bases2fastq"
|
||||
- "target/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/falco"
|
||||
- "target/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/multiqc"
|
||||
package_config:
|
||||
name: "demultiplex"
|
||||
version: "main"
|
||||
|
||||
@@ -2823,14 +2823,27 @@ meta = [
|
||||
},
|
||||
{
|
||||
"type" : "file",
|
||||
"name" : "--sample_sheet",
|
||||
"description" : "Sample sheet as input for BCL Convert. If not specified,\nwill try to autodetect the sample sheet in the input directory\n",
|
||||
"name" : "--run_information",
|
||||
"description" : "CSV file containing sample information, which will be used as \ninput for the demultiplexer. Canonically called 'SampleSheet.csv' (Illumina)\nor 'RunManifest.csv' (Element Biosciences). If not specified,\nwill try to autodetect the sample sheet in the input directory.\nRequires --demultiplexer to be set.\n",
|
||||
"must_exist" : true,
|
||||
"create_parent" : true,
|
||||
"required" : false,
|
||||
"direction" : "input",
|
||||
"multiple" : false,
|
||||
"multiple_sep" : ";"
|
||||
},
|
||||
{
|
||||
"type" : "string",
|
||||
"name" : "--demultiplexer",
|
||||
"description" : "Demultiplexer to use, choice depends on the provider\nof the instrument that was used to generate the data.\nWhen not using --sample_sheet, specifying this argument is not\nrequired.\n",
|
||||
"required" : false,
|
||||
"choices" : [
|
||||
"bases2fastq",
|
||||
"bclconvert"
|
||||
],
|
||||
"direction" : "input",
|
||||
"multiple" : false,
|
||||
"multiple_sep" : ";"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -2893,7 +2906,13 @@ meta = [
|
||||
"type" : "nextflow_script",
|
||||
"path" : "test.nf",
|
||||
"is_executable" : true,
|
||||
"entrypoint" : "test_wf"
|
||||
"entrypoint" : "test_illumina"
|
||||
},
|
||||
{
|
||||
"type" : "nextflow_script",
|
||||
"path" : "test.nf",
|
||||
"is_executable" : true,
|
||||
"entrypoint" : "test_bases2fastq"
|
||||
}
|
||||
],
|
||||
"status" : "enabled",
|
||||
@@ -2932,7 +2951,15 @@ meta = [
|
||||
"repository" : {
|
||||
"type" : "vsh",
|
||||
"repo" : "biobox",
|
||||
"tag" : "v0.2.0"
|
||||
"tag" : "v0.3.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "bases2fastq",
|
||||
"repository" : {
|
||||
"type" : "vsh",
|
||||
"repo" : "biobox",
|
||||
"tag" : "v0.3.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2940,7 +2967,7 @@ meta = [
|
||||
"repository" : {
|
||||
"type" : "vsh",
|
||||
"repo" : "biobox",
|
||||
"tag" : "v0.2.0"
|
||||
"tag" : "v0.3.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2948,7 +2975,7 @@ meta = [
|
||||
"repository" : {
|
||||
"type" : "vsh",
|
||||
"repo" : "biobox",
|
||||
"tag" : "v0.2.0"
|
||||
"tag" : "v0.3.0"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -2957,7 +2984,7 @@ meta = [
|
||||
"type" : "vsh",
|
||||
"name" : "bb",
|
||||
"repo" : "biobox",
|
||||
"tag" : "v0.2.0"
|
||||
"tag" : "v0.3.0"
|
||||
}
|
||||
],
|
||||
"license" : "MIT",
|
||||
@@ -3049,9 +3076,9 @@ meta = [
|
||||
"engine" : "native|native",
|
||||
"output" : "target/nextflow/demultiplex",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "5cb13230bf682321226addce896a3015e8864913",
|
||||
"git_remote" : "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-3-g5cb1323"
|
||||
"git_commit" : "6e6be28b85ab619214ae05a017a33498c0dc8890",
|
||||
"git_remote" : "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-5-g6e6be28"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "demultiplex",
|
||||
@@ -3096,9 +3123,10 @@ include { untar } from "${meta.resources_dir}/../../nextflow/io/untar/main.nf"
|
||||
include { gather_fastqs_and_validate } from "${meta.resources_dir}/../../nextflow/dataflow/gather_fastqs_and_validate/main.nf"
|
||||
include { interop_summary_to_csv } from "${meta.resources_dir}/../../nextflow/io/interop_summary_to_csv/main.nf"
|
||||
include { combine_samples } from "${meta.resources_dir}/../../nextflow/dataflow/combine_samples/main.nf"
|
||||
include { bcl_convert } from "${meta.root_dir}/dependencies/vsh/vsh/biobox/v0.2.0/nextflow/bcl_convert/main.nf"
|
||||
include { falco } from "${meta.root_dir}/dependencies/vsh/vsh/biobox/v0.2.0/nextflow/falco/main.nf"
|
||||
include { multiqc } from "${meta.root_dir}/dependencies/vsh/vsh/biobox/v0.2.0/nextflow/multiqc/main.nf"
|
||||
include { bcl_convert } from "${meta.root_dir}/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/bcl_convert/main.nf"
|
||||
include { bases2fastq } from "${meta.root_dir}/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/bases2fastq/main.nf"
|
||||
include { falco } from "${meta.root_dir}/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/falco/main.nf"
|
||||
include { multiqc } from "${meta.root_dir}/dependencies/vsh/vsh/biobox/v0.3.0/nextflow/multiqc/main.nf"
|
||||
|
||||
// inner workflow
|
||||
// user-provided Nextflow code
|
||||
@@ -3127,22 +3155,79 @@ workflow run_wf {
|
||||
// Gather input files from folder
|
||||
| map {id, state ->
|
||||
def newState = [:]
|
||||
if (!state.sample_sheet) {
|
||||
def sample_sheet = state.input.resolve("SampleSheet.csv")
|
||||
assert (sample_sheet && sample_sheet.isFile()): "Could not find 'SampleSheet.csv' file in input directory."
|
||||
newState["sample_sheet"] = sample_sheet
|
||||
println("Provided run information: ${state.run_information} and demultiplexer: ${state.demultiplexer}")
|
||||
if (!state.run_information) {
|
||||
println("Run information was not specified, auto-detecting...")
|
||||
// The supported_platforms hashmap must be a 1-on-1 mapping
|
||||
// Also, it's keys must be present in the 'choices' field
|
||||
// for the 'run_information' argument in the viash config.
|
||||
def supported_platforms = [
|
||||
"bclconvert": "SampleSheet.csv", // Illumina
|
||||
"bases2fastq": "RunManifest.csv" // Element Biosciences
|
||||
]
|
||||
def found_sample_information = supported_platforms.collectEntries{demultiplexer, filename ->
|
||||
println("Checking if ${filename} can be found in input folder ${state.input}.")
|
||||
def resolved_filename = state.input.resolve(filename)
|
||||
if (!resolved_filename.isFile()) {
|
||||
resolved_filename = null
|
||||
}
|
||||
println("Result after looking for run information for ${demultiplexer}: ${resolved_filename}.")
|
||||
[demultiplexer, resolved_filename]
|
||||
}
|
||||
def demultiplexer = null
|
||||
def run_information = null
|
||||
found_sample_information.each{demultiplexer_candidate, file_path ->
|
||||
if (file_path) {
|
||||
// At this point, a candicate run information file was found.
|
||||
assert !run_information: "Autodetection of run information " +
|
||||
"(SampleSheet, RunManifest) failed: " +
|
||||
"multiple candidate files found in input folder. " +
|
||||
"Please specify one using --run_information."
|
||||
run_information = file_path
|
||||
demultiplexer = demultiplexer_candidate
|
||||
}
|
||||
}
|
||||
|
||||
// When autodetecting, the run information should have been found
|
||||
assert run_information: "No run information file (SampleSheet, RunManifest) " +
|
||||
"found in input directory."
|
||||
|
||||
// When autodetecting, the demultiplexer must be set if the run information was found
|
||||
assert demultiplexer, "State error: the demultiplexer should have been autodetected. " +
|
||||
"Please report this as a bug."
|
||||
|
||||
// When autodetecting, the found demultiplexer must match
|
||||
// with the demultiplexer that the user has provided (in case it was provided).
|
||||
if (state.demultiplexer) {
|
||||
assert state.demultiplexer == demultiplexer,
|
||||
"Requested to use demultiplexer ${state.demultiplexer} " +
|
||||
"but demultiplexer based on the autodetected run information "
|
||||
"file ${run_information} seems to indicate that the demultiplexer "
|
||||
"should be ${demultiplexer}. Either avoid specifying the demultiplexer "
|
||||
"or override the autodetection of the run information by providing "
|
||||
"the file."
|
||||
}
|
||||
println("Using run information ${run_information} and demultiplexer ${demultiplexer}")
|
||||
// At this point, the autodetected state can override the user provided state.
|
||||
newState = newState + [
|
||||
"run_information": run_information,
|
||||
"demultiplexer": demultiplexer,
|
||||
]
|
||||
}
|
||||
|
||||
// Do not add InterOp to state because we generate the summary csv's in the next
|
||||
// step based on the run dir, not the InterOp dir.
|
||||
def interop_dir = state.input.resolve("InterOp")
|
||||
assert interop_dir.isDirectory(): "Expected InterOp directory to be present."
|
||||
if (newState.demultiplexer in ["bclconvert"]) {
|
||||
// Do not add InterOp to state because we generate the summary csv's in the next
|
||||
// step based on the run dir, not the InterOp dir.
|
||||
def interop_dir = state.input.resolve("InterOp")
|
||||
assert interop_dir.isDirectory(): "Expected InterOp directory to be present."
|
||||
}
|
||||
|
||||
def resultState = state + newState
|
||||
[id, resultState]
|
||||
}
|
||||
|
||||
| interop_summary_to_csv.run(
|
||||
runIf: {id, state -> state.demultiplexer in ["bclconvert"]},
|
||||
directives: [label: ["lowmem", "verylowcpu"]],
|
||||
fromState: [
|
||||
"input": "input",
|
||||
@@ -3154,16 +3239,40 @@ workflow run_wf {
|
||||
)
|
||||
// run bcl_convert
|
||||
| bcl_convert.run(
|
||||
runIf: {id, state -> state.demultiplexer in ["bclconvert"]},
|
||||
directives: [label: ["highmem", "midcpu"]],
|
||||
fromState: [
|
||||
"bcl_input_directory": "input",
|
||||
"sample_sheet": "sample_sheet",
|
||||
"sample_sheet": "run_information",
|
||||
"output_directory": "output",
|
||||
],
|
||||
toState: {id, result, state ->
|
||||
def toAdd = [
|
||||
"output_bclconvert" : result.output_directory,
|
||||
"bclconvert_reports": result.reports,
|
||||
"output_demultiplexer" : result.output_directory,
|
||||
"run_id": id,
|
||||
]
|
||||
def newState = state + toAdd
|
||||
return newState
|
||||
}
|
||||
)
|
||||
// run bases2fastq
|
||||
| bases2fastq.run(
|
||||
runIf: {id, state -> state.demultiplexer in ["bases2fastq"]},
|
||||
directives: [label: ["highmem", "midcpu"]],
|
||||
fromState: [
|
||||
"analysis_directory": "input",
|
||||
"run_manifest": "run_information",
|
||||
"output_directory": "output",
|
||||
],
|
||||
args: [
|
||||
"no_projects": true, // Do not put output files in a subfolder for project
|
||||
//"split_lanes": true,
|
||||
"legacy_fastq": true, // Illumina style output names
|
||||
"group_fastq": true, // No subdir per sample
|
||||
],
|
||||
toState: {id, result, state ->
|
||||
def toAdd = [
|
||||
"output_demultiplexer" : result.output_directory,
|
||||
"run_id": id,
|
||||
]
|
||||
def newState = state + toAdd
|
||||
@@ -3172,8 +3281,8 @@ workflow run_wf {
|
||||
)
|
||||
| gather_fastqs_and_validate.run(
|
||||
fromState: [
|
||||
"input": "output_bclconvert",
|
||||
"sample_sheet": "sample_sheet",
|
||||
"input": "output_demultiplexer",
|
||||
"sample_sheet": "run_information",
|
||||
],
|
||||
toState: [
|
||||
"fastq_forward": "fastq_forward",
|
||||
@@ -3214,15 +3323,18 @@ workflow run_wf {
|
||||
| multiqc.run(
|
||||
directives: [label: ["lowcpu", "lowmem"]],
|
||||
fromState: {id, state ->
|
||||
[
|
||||
"input": [
|
||||
state.output_falco,
|
||||
def new_state = [
|
||||
"input": [state.output_falco],
|
||||
"output_report": state.output_multiqc,
|
||||
"cl_config": 'sp: {fastqc/data: {fn: "*_fastqc_data.txt"}}'
|
||||
]
|
||||
if (state.demultiplexer == "bclconvert") {
|
||||
new_state["input"] += [
|
||||
state.interop_run_summary.getParent(),
|
||||
state.interop_index_summary.getParent()
|
||||
],
|
||||
"output_report": state.output_multiqc,
|
||||
"cl_config": 'sp: {fastqc/data: {fn: "*_fastqc_data.txt"}}',
|
||||
]
|
||||
]
|
||||
}
|
||||
return new_state
|
||||
},
|
||||
toState: { id, result, state ->
|
||||
state + [ "output_multiqc" : result.output_report ]
|
||||
@@ -3230,7 +3342,7 @@ workflow run_wf {
|
||||
)
|
||||
| setState(
|
||||
[
|
||||
"output": "output_bclconvert",
|
||||
"output": "output_demultiplexer",
|
||||
"output_falco": "output_falco",
|
||||
"output_multiqc": "output_multiqc"
|
||||
]
|
||||
|
||||
@@ -24,11 +24,23 @@
|
||||
|
||||
|
||||
,
|
||||
"sample_sheet": {
|
||||
"run_information": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `file`. Sample sheet as input for BCL Convert",
|
||||
"help_text": "Type: `file`. Sample sheet as input for BCL Convert. If not specified,\nwill try to autodetect the sample sheet in the input directory\n"
|
||||
"description": "Type: `file`. CSV file containing sample information, which will be used as \ninput for the demultiplexer",
|
||||
"help_text": "Type: `file`. CSV file containing sample information, which will be used as \ninput for the demultiplexer. Canonically called \u0027SampleSheet.csv\u0027 (Illumina)\nor \u0027RunManifest.csv\u0027 (Element Biosciences). If not specified,\nwill try to autodetect the sample sheet in the input directory.\nRequires --demultiplexer to be set.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
,
|
||||
"demultiplexer": {
|
||||
"type":
|
||||
"string",
|
||||
"description": "Type: `string`, choices: ``bases2fastq`, `bclconvert``. Demultiplexer to use, choice depends on the provider\nof the instrument that was used to generate the data",
|
||||
"help_text": "Type: `string`, choices: ``bases2fastq`, `bclconvert``. Demultiplexer to use, choice depends on the provider\nof the instrument that was used to generate the data.\nWhen not using --sample_sheet, specifying this argument is not\nrequired.\n",
|
||||
"enum": ["bases2fastq", "bclconvert"]
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -50,7 +62,7 @@
|
||||
"description": "Type: `file`, required, default: `$id.$key.output.output`. Directory to write fastq data to",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.output.output`. Directory to write fastq data to"
|
||||
,
|
||||
"default": "$id.$key.output.output"
|
||||
"default":"$id.$key.output.output"
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +73,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.output_falco.output_falco`. Directory to write falco output to",
|
||||
"help_text": "Type: `file`, default: `$id.$key.output_falco.output_falco`. Directory to write falco output to"
|
||||
,
|
||||
"default": "$id.$key.output_falco.output_falco"
|
||||
"default":"$id.$key.output_falco.output_falco"
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +84,7 @@
|
||||
"description": "Type: `file`, default: `$id.$key.output_multiqc.html`. Directory to write falco output to",
|
||||
"help_text": "Type: `file`, default: `$id.$key.output_multiqc.html`. Directory to write falco output to"
|
||||
,
|
||||
"default": "$id.$key.output_multiqc.html"
|
||||
"default":"$id.$key.output_multiqc.html"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -141,9 +141,9 @@ build_info:
|
||||
output: "target/nextflow/io/interop_summary_to_csv"
|
||||
executable: "target/nextflow/io/interop_summary_to_csv/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "5cb13230bf682321226addce896a3015e8864913"
|
||||
git_remote: "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-3-g5cb1323"
|
||||
git_commit: "6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
git_remote: "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-5-g6e6be28"
|
||||
package_config:
|
||||
name: "demultiplex"
|
||||
version: "main"
|
||||
|
||||
@@ -2977,9 +2977,9 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "target/nextflow/io/interop_summary_to_csv",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "5cb13230bf682321226addce896a3015e8864913",
|
||||
"git_remote" : "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-3-g5cb1323"
|
||||
"git_commit" : "6e6be28b85ab619214ae05a017a33498c0dc8890",
|
||||
"git_remote" : "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-5-g6e6be28"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "demultiplex",
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"description": "Type: `file`, required, default: `$id.$key.output_run_summary.output_run_summary`. ",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.output_run_summary.output_run_summary`. "
|
||||
,
|
||||
"default": "$id.$key.output_run_summary.output_run_summary"
|
||||
"default":"$id.$key.output_run_summary.output_run_summary"
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
"description": "Type: `file`, required, default: `$id.$key.output_index_summary.output_index_summary`. ",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.output_index_summary.output_index_summary`. "
|
||||
,
|
||||
"default": "$id.$key.output_index_summary.output_index_summary"
|
||||
"default":"$id.$key.output_index_summary.output_index_summary"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -148,9 +148,9 @@ build_info:
|
||||
output: "target/nextflow/io/untar"
|
||||
executable: "target/nextflow/io/untar/main.nf"
|
||||
viash_version: "0.9.0"
|
||||
git_commit: "5cb13230bf682321226addce896a3015e8864913"
|
||||
git_remote: "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-3-g5cb1323"
|
||||
git_commit: "6e6be28b85ab619214ae05a017a33498c0dc8890"
|
||||
git_remote: "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex"
|
||||
git_tag: "v0.1.1-5-g6e6be28"
|
||||
package_config:
|
||||
name: "demultiplex"
|
||||
version: "main"
|
||||
|
||||
@@ -2989,9 +2989,9 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "target/nextflow/io/untar",
|
||||
"viash_version" : "0.9.0",
|
||||
"git_commit" : "5cb13230bf682321226addce896a3015e8864913",
|
||||
"git_remote" : "https://x-access-token:ghs_x4A4kChpmjRCoWA3E68PwNsGJxIsF40DBeTf@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-3-g5cb1323"
|
||||
"git_commit" : "6e6be28b85ab619214ae05a017a33498c0dc8890",
|
||||
"git_remote" : "https://x-access-token:ghs_iopCikoFK5KlWGbHHLIwAf82AMtbiI0fzew1@github.com/viash-hub/demultiplex",
|
||||
"git_tag" : "v0.1.1-5-g6e6be28"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "demultiplex",
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"description": "Type: `file`, required, default: `$id.$key.output.output`. Directory to write the contents of the ",
|
||||
"help_text": "Type: `file`, required, default: `$id.$key.output.output`. Directory to write the contents of the .tar file to."
|
||||
,
|
||||
"default": "$id.$key.output.output"
|
||||
"default":"$id.$key.output.output"
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user