Build branch save-params with version save-params (dbca5cb)

Build pipeline: viash-hub.htrnaseq.save-params-jsfjj

Source commit: dbca5cbb3a

Source message: Apply suggestions from code review
This commit is contained in:
CI
2025-05-08 13:11:57 +00:00
parent ae146ee219
commit cae1b67da7
127 changed files with 2572 additions and 1288 deletions

View File

@@ -1,3 +1,31 @@
# htrnaseq v0.8.0
## New functionality
* `save_params`: added a component to save workflow input parameters as yaml (PR #48).
* Added `run_params` parameter to `htrnaseq` and `runner` workflows in order to save the input parameters
used for the workflow run (PR #48).
# htrnaseq v0.7.2
## Documentation
* Update README (PR #54)
# htrnaseq v0.7.1
## Bug fixes
* Bump viash version to `0.9.4`. This adds support for nextflow versions starting major version 25.01 and
fixes an issue where an integer being passed to a argument with `type: double` resulted in an error (PR #51).
* `reporting`: updated default colour mapping (PR #50).
## Minor changes
* `create_report`: bump bioconductor version to 3.21 in order to accommodate R version 4.5 (PR #52).
# htrnaseq v0.7.0
## Breaking changes

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 OpenPipelines
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

292
README.md
View File

@@ -1,129 +1,207 @@
# HT-RNAseq - A pipeline for processing high-throughput RNA-seq data
# HT-RNAseq
[![ViashHub](https://img.shields.io/badge/ViashHub-htrnaseq-7a4baa.svg)](https://www.viash-hub.com/packages/htrnaseq)
[![GitHub](https://img.shields.io/badge/GitHub-viash--hub%2Fhtrnaseq-blue.svg)](https://github.com/viash-hub/htrnaseq)
[![GitHub
License](https://img.shields.io/github/license/viash-hub/htrnaseq.svg)](https://github.com/viash-hub/htrnaseq/blob/main/LICENSE)
[![GitHub
Issues](https://img.shields.io/github/issues/viash-hub/htrnaseq.svg)](https://github.com/viash-hub/htrnaseq/issues)
[![Viash
version](https://img.shields.io/badge/Viash-v0.9.2-blue.svg)](https://viash.io)
## Introduction
__TODO__: Add a description of the pipeline here.
## Test data
This workflow is designed to process high-throughput RNA-seq data, where
every well of a microarray plate is a sample. A fasta file provided as
input defines the mapping between sample barcodes and wells.
As test data, we use [a DRUGseq dataset](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176150) from the [NCBI Sequence Read Archive](https://www.ncbi.nlm.nih.gov/sra).
The workflow is built in a modular fashion, where most of the base
functionality is provided by components from
[`biobox`](https://www.viash-hub.com/packages/biobox/latest)
supplemented by custom base components and workflow components in this
package.
The original data has been (partly) subsampled to reduce the test runtime. We used [seqtk](https://github.com/lh3/seqtk) for this with a seed of 1, e.g.:
The full workflow is split in two major subworkflows that can be run
independently:
```bash
- **Well-demultiplexing:** Split the input (plate/pool level) fastq
files per well.
- **Mapping, counting and QC:** Run per-well mapping, counting and
generate QC reports.
Each of those can be started individually, or the full workflow can be
run in two ways:
1. Run the [main
workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)
containing the main functionality.
2. Run the [(opinionated)
`runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)
where a number of choices (input/output structure and location) have
been made.
Input for the workflow has to be `fastq` files (zipped or not). For bcl
or other formats, please consider running
[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.
``` mermaid lang="mermaid"
flowchart TB
subgraph runner [runner]
direction TB
subgraph htrnaseq [HT-RNAseq]
direction LR
demultiplex[Well demultiplexing]
map
report
eset
end
end
demultiplex --> map --> report --> eset
class runner container
class htrnaseq container
class demultiplex container-inner
class map container-inner
class report container-inner
class eset container-inner
class demultiplex node
class map node
class report node
class eset node
```
## Example usage
### Test and example data
If you want to explore this workflow, its possible to the use data we
use as test data: [a DRUGseq
dataset](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176150)
from the [NCBI Sequence Read Archive](https://www.ncbi.nlm.nih.gov/sra).
For the unit and integration tests, this data has been (partly)
subsampled to reduce the test runtime. We used
[seqtk](https://github.com/lh3/seqtk) for this with a seed of 1, e.g.:
``` bash
seqtk sample -s1 orig/SRR14730302/VH02001614_S8_R1_001.fastq.gz 10000 > 10k/SRR14730302/VH02001614_S8_R1_001.fastq.gz
```
The data is available at: `gs://viash-hub-test-data/htrnaseq/v1/`:
This data is available at: `gs://viash-hub-resources/htrnaseq/v1/`.
```
gcstree -f viash-hub-test-data/htrnaseq/v1/
viash-hub-test-data
└── htrnaseq
└── v1
├── [ 48] 2-wells.fasta
├── [465.3K] GSE176150_metadata.csv
├── 100k
│ ├── SRR14730301
│ │ ├── [8.5M] VH02001612_S9_R1_001.fastq
│ │ └── [14.9M] VH02001612_S9_R2_001.fastq
│ └── SRR14730302
│ ├── [8.5M] VH02001614_S8_R1_001.fastq.gz
│ └── [14.9M] VH02001614_S8_R2_001.fastq.gz
├── 10k
│ ├── SRR14730301
│ │ ├── [845.4K] VH02001612_S9_R1_001.fastq
│ │ └── [1.5M] VH02001612_S9_R2_001.fastq
│ └── SRR14730302
│ ├── [845.3K] VH02001614_S8_R1_001.fastq.gz
│ └── [1.5M] VH02001614_S8_R2_001.fastq.gz
└── orig
├── [20.4G] SRR14730301
│ └── [20.4G] SRR14730301
├── SRR14730301
│ ├── [9.1G] VH02001612_S9_R1_001.fastq.gz
│ └── [22.0G] VH02001612_S9_R2_001.fastq.gz
├── [16.9G] SRR14730302
│ └── [16.9G] SRR14730302
├── SRR14730302
│ ├── [7.6G] VH02001614_S8_R1_001.fastq.gz
│ └── [18.0G] VH02001614_S8_R2_001.fastq.gz
├── [18.0G] SRR14730303
│ └── [18.0G] SRR14730303
├── SRR14730303
│ ├── [8.1G] VH02001618_S7_R1_001.fastq.gz
│ └── [19.2G] VH02001618_S7_R2_001.fastq.gz
├── [16.5G] SRR14730304
│ └── [16.5G] SRR14730304
├── SRR14730304
│ ├── [7.5G] VH02001700_S6_R1_001.fastq.gz
│ └── [17.8G] VH02001700_S6_R2_001.fastq.gz
├── [19.0G] SRR14730305
│ └── [19.0G] SRR14730305
├── SRR14730305
│ ├── [8.4G] VH02001702_S5_R1_001.fastq.gz
│ └── [20.6G] VH02001702_S5_R2_001.fastq.gz
├── [14.6G] SRR14730306
│ └── [14.6G] SRR14730306
├── SRR14730306
│ ├── [6.6G] VH02001704_S4_R1_001.fastq.gz
│ └── [16.0G] VH02001704_S4_R2_001.fastq.gz
├── [21.5G] SRR14730307
│ └── [21.5G] SRR14730307
├── SRR14730307
│ ├── [9.6G] VH02001708_S3_R1_001.fastq.gz
│ └── [23.2G] VH02001708_S3_R2_001.fastq.gz
├── [20.7G] SRR14730308
│ └── [20.7G] SRR14730308
├── SRR14730308
│ ├── [9.3G] VH02001710_S2_R1_001.fastq.gz
│ └── [22.1G] VH02001710_S2_R2_001.fastq.gz
├── [15.8G] SRR14730309
│ └── [15.8G] SRR14730309
└── SRR14730309
├── [7.2G] VH02001712_S1_R1_001.fastq.gz
└── [16.9G] VH02001712_S1_R2_001.fastq.gz
### Run from Viash Hub
18 directories, 37 files
Open [Viash Hub](https://www.viash-hub.com) and browse to the [htrnaseq
component](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq).
Press the Launch button and follow the instructions.
![](assets/htrnaseq-launch-small.png)
We will start an example run loading just one input and using a barcodes
fasta file containing only 2 wells.
In the first step, we add the `local` profile to the list of profiles in
order to limit the cpu and memory requirements of the workflow steps:
![](assets/launch-parameters-1-small.png)
In the next step, we provide the paramters as follows:
- `input_r1`:
`gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730301/VH02001612_S9_R1_001.fastq`
- `input_r2`:
`gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730301/VH02001612_S9_R2_001.fastq`
- `genomeDir`:
`gs://viash-hub-test-data/htrnaseq/v1/genomeDir/subset/Homo_sapiens/v0.0.3/`
- `barcodesFasta`:
`gs://viash-hub-test-data/htrnaseq/v1/2-wells-with-ids.fasta`
- `annotation`:
`gs://viash-hub-test-data/htrnaseq/v1/genomeDir/gencode.v41.annotation.gtf.gz`
Please note that both `input_r1` and `input_r2` can take multiple
values. This means that one has to press ENTER after pasting the input
path.
![](assets/launch-parameters-2-small.png)
Press the Launch button at the end to get the instructions on how to
run the workflow from the CLI.
### Run using NF-Tower / Seqera Cloud
Its possible to run the workflow directly from [Seqera
Cloud](https://cloud.seqera.io). The necessary [Nextflow schema
file](https://nextflow-io.github.io/nf-schema/latest/nextflow_schema/nextflow_schema_specification/)
has been built and provided with the workflows in order to use the
form-based input. However, Seqera Cloud can not deal with multiple-value
parameters when using the form-based input. Therefore, its better to
use Viash Hub also here:
First, select the option to run the workflow using Seqera Cloud. You
will need to create an API token for your account. Once this token is
filled in in the corresponding field, you will get the option to select
a Workspace and a Compute environment.
![](assets/launch-parameters-3-small.png)
Next, we need to fill in the parameters for the run. This is similar to
before:
![](assets/launch-parameters-4-small.png)
In the next screen, pressing the Launch button will actually start the
workflow on Seqera Cloud. A message is shown when the submit was
successful.
![](assets/launch-parameters-5-small.png)
### Run from the CLI
Running from the CLI directly without using Viash hub is possible. The
easiest is to just use the integrated help functionality, for instance
using the following:
``` bash
nextflow run https://packages.viash-hub.com/vsh/htrnaseq.git \
-revision v0.3.0 \
-main-script target/nextflow/workflows/runner/main.nf \
--help
```
### (Optional) Resource usage tuning
The `orig` directory contains the original fastq files. The fastq files are available for 10k and 100k subsamples in the `10k` and `100k` directories, respectively.
Nextflows labels can be used to specify the amount of resources a
process can use. This workflow uses the following labels for CPU and
memory:
The `2-wells.fasta` file contains the barcodes for 2 wells.
- `verylowmem`, `lowmem`, `midmem`, `highmem`
- `verylowcpu`, `lowcpu`, `midcpu`, `highcpu`
## Test run
The defaults for these labels can be found at
`src/config/labels.config`. Nextflow checks that the specified resources
for a process do not exceed what is available on the machine and will
not start if it does. Create your own config file to tune the labels to
your needs, for example:
The pipeline can be run by creating a `params.yaml` file like this:
// Resource labels
withLabel: verylowcpu { cpus = 2 }
withLabel: lowcpu { cpus = 8 }
withLabel: midcpu { cpus = 16 }
withLabel: highcpu { cpus = 32 }
```yaml
param_list:
- input_r1: "gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730301/VH02001612_S9_R1_001.fastq"
input_r2: "gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730301/VH02001612_S9_R2_001.fastq"
genomeDir: "gs://viash-hub-test-data/htrnaseq/v1/genomeDir/gencode.v41.star.sparse"
barcodesFasta: "gs://viash-hub-test-data/htrnaseq/v1/2-wells.fasta"
id: sample_one
- input_r1: "gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730302/VH02001614_S8_R1_001.fastq"
input_r2: "gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730302/VH02001614_S8_R2_001.fastq"
genomeDir: "gs://viash-hub-test-data/htrnaseq/v1/genomeDir/gencode.v41.star.sparse"
barcodesFasta: "gs://viash-hub-test-data/htrnaseq/v1/2-wells.fasta"
id: sample_two
```
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
and then:
When starting nextflow using the CLI, you can use `-c` to provide the
file to nextflow and overwrite the defaults.
```bash
viash ns build --setup cb
nextflow run . -main-script target/nextflow/workflows/htrnaseq/main.nf \
-profile docker \
-c target/nextflow/workflows/htrnaseq/nextflow.config \
-params-file params.yaml \
-resume \
--publish_dir output
```
## Contributions
Or, by running `src/workflows/htrnaseq/integration_test.sh`.
Developed in collaboration with Data Intuitive and Open Analytics.
# Special Thanks
Developed in collaboration with Data Intuitive and Open Analytics.
Other contributions are welcome.

149
README.qmd Normal file
View File

@@ -0,0 +1,149 @@
---
format: gfm
---
```{r setup, include=FALSE}
project <- yaml::read_yaml("_viash.yaml")
license <- paste0(project$links$repository, "/blob/main/LICENSE")
contributing <- paste0(project$links$repository, "/blob/main/CONTRIBUTING.md")
```
# HT-RNAseq
[![ViashHub](https://img.shields.io/badge/ViashHub-`r project$name`-7a4baa.svg)](https://www.viash-hub.com/packages/`r project$name`)
[![GitHub](https://img.shields.io/badge/GitHub-viash--hub%2F`r project$name`-blue.svg)](`r project$links$repository`)
[![GitHub License](https://img.shields.io/github/license/viash-hub/`r project$name`.svg)](`r license`)
[![GitHub Issues](https://img.shields.io/github/issues/viash-hub/`r project$name`.svg)](`r project$links$issue_tracker`)
[![Viash version](https://img.shields.io/badge/Viash-v`r gsub("-", "--", project$viash_version)`-blue.svg)](https://viash.io)
## Introduction
`r project$description`
```{mermaid lang='mermaid'}
flowchart TB
subgraph runner [runner]
direction TB
subgraph htrnaseq [HT-RNAseq]
direction LR
demultiplex[Well demultiplexing]
map
report
eset
end
end
demultiplex --> map --> report --> eset
class runner container
class htrnaseq container
class demultiplex container-inner
class map container-inner
class report container-inner
class eset container-inner
class demultiplex node
class map node
class report node
class eset node
```
## Example usage
### Test and example data
If you want to explore this workflow, it's possible to the use data we use as test data: [a DRUGseq dataset](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176150) from the [NCBI Sequence Read Archive](https://www.ncbi.nlm.nih.gov/sra). For the unit and integration tests, this data has been (partly) subsampled to reduce the test runtime. We used [seqtk](https://github.com/lh3/seqtk) for this with a seed of 1, e.g.:
```bash
seqtk sample -s1 orig/SRR14730302/VH02001614_S8_R1_001.fastq.gz 10000 > 10k/SRR14730302/VH02001614_S8_R1_001.fastq.gz
```
This data is available at: `gs://viash-hub-test-data/htrnaseq/v1/`.
### Run from Viash Hub
Open [Viash Hub](https://www.viash-hub.com) and browse to the [htrnaseq component](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq). Press the 'Launch' button and follow the instructions.
![](assets/htrnaseq-launch-small.png)
We will start an example run loading just one input and using a barcodes fasta file containing only 2 wells.
In the first step, we add the `local` profile to the list of profiles in order to limit the cpu and memory requirements of the workflow steps:
![](assets/launch-parameters-1-small.png)
In the next step, we provide the paramters as follows:
- `input_r1`: `gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730301/VH02001612_S9_R1_001.fastq`
- `input_r2`: `gs://viash-hub-test-data/htrnaseq/v1/100k/SRR14730301/VH02001612_S9_R2_001.fastq`
- `genomeDir`: `gs://viash-hub-test-data/htrnaseq/v1/genomeDir/subset/Homo_sapiens/v0.0.3/`
- `barcodesFasta`: `gs://viash-hub-test-data/htrnaseq/v1/2-wells-with-ids.fasta`
- `annotation`: `gs://viash-hub-test-data/htrnaseq/v1/genomeDir/gencode.v41.annotation.gtf.gz`
Please note that both `input_r1` and `input_r2` can take multiple values. This means that one has to press ENTER after pasting the input path.
![](assets/launch-parameters-2-small.png)
Press the 'Launch' button at the end to get the instructions on how to run the workflow from the CLI.
### Run using NF-Tower / Seqera Cloud
It's possible to run the workflow directly from [Seqera Cloud](https://cloud.seqera.io). The necessary [Nextflow schema file](https://nextflow-io.github.io/nf-schema/latest/nextflow_schema/nextflow_schema_specification/) has been built and provided with the workflows in order to use the form-based input. However, Seqera Cloud can not deal with multiple-value parameters when using the form-based input. Therefore, it's better to use Viash Hub also here:
First, select the option to run the workflow using Seqera Cloud. You will need to create an API token for your account. Once this token is filled in in the corresponding field, you will get the option to select a 'Workspace' and a 'Compute environment'.
![](assets/launch-parameters-3-small.png)
Next, we need to fill in the parameters for the run. This is similar to before:
![](assets/launch-parameters-4-small.png)
In the next screen, pressing the 'Launch' button will actually start the workflow on Seqera Cloud. A message is shown when the submit was successful.
![](assets/launch-parameters-5-small.png)
### Run from the CLI
Running from the CLI directly without using Viash hub is possible. The easiest is to just use the integrated help functionality, for instance using the following:
```bash
nextflow run https://packages.viash-hub.com/vsh/htrnaseq.git \
-revision v0.3.0 \
-main-script target/nextflow/workflows/runner/main.nf \
--help
```
### (Optional) Resource usage tuning
Nextflow's labels can be used to specify the amount of resources a process can use. This workflow uses the following labels for CPU and memory:
* `verylowmem`, `lowmem`, `midmem`, `highmem`
* `verylowcpu`, `lowcpu`, `midcpu`, `highcpu`
The defaults for these labels can be found at `src/config/labels.config`. Nextflow checks that the specified resources for a process do not exceed what is available on the machine and will not start if it does. Create your own config file to tune the labels to your needs, for example:
```
// Resource labels
withLabel: verylowcpu { cpus = 2 }
withLabel: lowcpu { cpus = 8 }
withLabel: midcpu { cpus = 16 }
withLabel: highcpu { cpus = 32 }
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
```
When starting nextflow using the CLI, you can use `-c` to provide the file to nextflow and overwrite the defaults.
## Contributions
Developed in collaboration with Data Intuitive and Open Analytics.
Other contributions are welcome.

View File

@@ -1,13 +1,47 @@
name: htrnaseq
summary: |
A workflow for high-throughput RNA-seq data analyses.
description: |
High-throughput pipeline [WIP]
This workflow is designed to process high-throughput RNA-seq data, where every
well of a microarray plate is a sample. A fasta file provided as input
defines the mapping between sample barcodes and wells.
The workflow is built in a modular fashion, where most of the base functionality
is provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)
supplemented by custom base components and workflow components in this package.
The full workflow is split in two major subworkflows that can be run independently:
* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.
* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.
Each of those can be started individually, or the full workflow can be run in two ways:
1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)
containing the main functionality.
2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a
number of choices (input/output structure and location) have been made.
Input for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running
[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.
license: MIT
keywords: [bioinformatics, sequence, high-throughput, mapping, counting, pipeline]
keywords:
[
bioinformatics,
sequencing,
high-throughput,
RNAseq,
mapping,
counting,
pipeline,
workflow,
]
links:
issue_tracker: https://github.com/viash-hub/htrnaseq/issues
repository: https://github.com/viash-hub/htrnaseq
viash_version: 0.9.2
viash_version: 0.9.4
info:
test_resources:

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
assets/htrnaseq-launch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -41,4 +41,4 @@ done
cp -rL "$par_html_report" "$par_output/"
cp -rL "$par_params" "$par_output/"
cp -rL "$par_run_params" "$par_output/"

View File

@@ -32,7 +32,7 @@ argument_groups:
- name: "--html_report"
type: file
required: true
- name: "--params"
- name: "--run_params"
type: file
required: true
- name: Output arguments

View File

@@ -40,6 +40,10 @@ engines:
packages:
- procps
- pandoc
- type: r
script:
- install.packages("BiocManager")
- BiocManager::install(version = "3.21", type = "source", checkBuilt = TRUE)
- type: r
bioc:
- Biobase

View File

@@ -283,15 +283,31 @@ plateLayout <- function(
if (is.null(colours)) {
colours <- tryCatch({
colorRamp2(
circlize::colorRamp2(
breaks = breaks,
colors = brewer.pal(length(breaks), "Purples")
)
},
error = function(cond) {
return(c("#9370DB", "white"))
error = function(cond){
message("Recomputed breaks for proper colour mapping")
breakValues <- plateValues$values
breakValues[which(is.na(breakValues))] <- 0
if (all(breakValues >= 0)) {
breaks <- computeBreaks(7, max(plateValues$values, na.rm = TRUE))
} else {
breaks <- quantile(plateValues$values, probs = seq(0, 1, 0.125))
}
circlize::colorRamp2(
breaks = breaks,
colors = brewer.pal(length(breaks), "Purples")
)
})
}
ht <- Heatmap(
plateValues$values,
column_title = mainTitle, column_title_side = "top",
@@ -425,6 +441,7 @@ computeBreaks <- function(nBreaks, variable) {
)
coefExp <- c(exp(coefSystem[1]), coefSystem[2])
breaks <- coefExp[1] * exp((1:(nBreaks - 1)) * coefExp[2])
breaks <- unique(c(0, breaks))
}
return(c(0, breaks))
}
return(breaks)
}

View File

@@ -88,7 +88,7 @@ argument_groups:
direction: output
required: true
default: report.$id.html
- name: "--params"
- name: "--run_params"
type: file
direction: output
required: false

View File

@@ -12,6 +12,9 @@ workflow run_wf {
}
| save_params.run(
runIf: { id, state ->
state.run_params != null
},
fromState: {id, state ->
// Define the function before using it
def convertPaths
@@ -36,10 +39,10 @@ workflow run_wf {
return [
"id": id,
"params_yaml": encodedYaml,
"output": state.params
"output": state.run_params
]
},
toState: ["params": "output"]
toState: ["run_params": "output"]
)
// The featureData only has one requirement: the genome annotation.
@@ -49,8 +52,6 @@ workflow run_wf {
// input annotation file. In turn, the featureData file can joined into the original input
// channel which allows it to be shared across events if required.
f_data_ch = input_ch
| toSortedList()
| flatMap {ids_and_states ->
def annotation_files = ids_and_states.inject([:]){ old_state, id_and_state ->
@@ -60,7 +61,7 @@ workflow run_wf {
return new_state
}
def file_names = annotation_files.keySet().collect{it.name}
assert (file_names.toSet().size() == file_names.size()):
assert (file_names.toSet().size() == file_names.size()),
"Please make sure that the annotation files have unique file names."
def new_states = annotation_files.collect{annotation_file, value ->
def new_state = [annotation_file.name , ["annotation": annotation_file, "event_ids": value]]
@@ -94,7 +95,7 @@ workflow run_wf {
toState: {id, result, state ->
def all_fastq = result.output_r1 + result.output_r2
def output_dir = all_fastq.collect{it.parent}.unique()
assert output_dir.size() == 1: "Expected output from well demultiplexing to reside into one directory."
assert output_dir.size() == 1, "Expected output from well demultiplexing to reside into one directory."
def new_state = state + [
"input_r1": result.output_r1,
"input_r2": result.output_r2,
@@ -213,10 +214,10 @@ workflow run_wf {
// Gather the keys from all states. for some state items,
// we need gather all the different items from across the states
def barcodes = states.collect{it.barcode}
assert barcodes.clone().unique().size() == barcodes.size(): \
assert barcodes.clone().unique().size() == barcodes.size(), \
"Error when gathering information for pool ${id}, barcodes are not unique!"
def well_ids = states.collect{it.well_id}
assert well_ids.clone().unique().size() == well_ids.size(): \
assert well_ids.clone().unique().size() == well_ids.size(), \
"Error when gathering information for pool ${id}, well IDs are not unique!"
def custom_state = [
"input_r1": states.collect{it.input_r1},
@@ -237,7 +238,7 @@ workflow run_wf {
// All other state should have a unique value
def old_state_items = other_state_keys.inject([:]){ old_state, argument_name ->
argument_values = states.collect{it.get(argument_name)}.unique()
assert argument_values.size() == 1: "Arguments should be the same across modalities. Please report this \
assert argument_values.size() == 1, "Arguments should be the same across modalities. Please report this \
as a bug. Argument name: $argument_name, \
argument value: $argument_values"
def argument_value
@@ -350,12 +351,10 @@ workflow run_wf {
"f_data": "f_data",
"p_data": "p_data",
"html_report": "html_report",
"params": "params",
"run_params": "run_params",
"_meta": "_meta",
])
| view
emit:
output_ch
}

View File

@@ -28,10 +28,11 @@ argument_groups:
type: integer
min: 1
default: 10
- name: "--params"
- name: "--run_params"
type: file
required: false
default: params.$id.yaml
direction: output
default: params.yaml
- name: Metadata arguments
arguments:
- name: --id

View File

@@ -5,10 +5,10 @@ def version = get_version(viash_config)
workflow run_wf {
take:
input_ch
raw_ch
main:
htrnaseq_ch = input_ch
input_ch = raw_ch
// List the FASTQ files per input directory
// Be careful: an event per lane is created!
| map {id, state ->
@@ -16,11 +16,21 @@ workflow run_wf {
return [id, new_state]
}
| view
save_params_ch = input_ch
| toSortedList()
| map { states ->
def new_id = "save_params"
def all_states = states.collect{it[1]}
def run_params_output_templates = all_states.collect{it.run_params}
assert run_params_output_templates.unique().size() == 1: "The value for the 'run_params' parameter is not the same across runs."
def new_state = ["run_params": run_params_output_templates[0], "all_states": all_states]
return [new_id, new_state]
}
| save_params.run(
key: "save_params_runner",
fromState: {id, state ->
// Define the function before using it
def convertPaths
convertPaths = { value ->
if (value instanceof java.nio.file.Path)
@@ -34,7 +44,7 @@ workflow run_wf {
}
// Apply conversion to all state values
def convertedState = state.collectEntries { k, v -> [(k): convertPaths(v)] }
def convertedState = state.all_states.collect{it.collectEntries { k, v -> [(k): convertPaths(v)] }}
def yaml = new org.yaml.snakeyaml.Yaml()
def yamlString = yaml.dump(convertedState)
@@ -43,12 +53,13 @@ workflow run_wf {
return [
"id": id,
"params_yaml": encodedYaml,
"output": state.params
"output": state.run_params
]
},
toState: ["params": "output"]
toState: ["run_params": "output"]
)
htrnaseq_ch = input_ch
| listInputDir.run(
fromState: [
"input": "input",
@@ -93,7 +104,7 @@ workflow run_wf {
nrReadsNrGenesPerChrom: 'nrReadsNrGenesPerChrom/$id.txt',
star_qc_metrics: 'starLogs/$id.txt',
html_report: "report.html",
params: null
run_params: null
],
fromState: [
input_r1: "r1",
@@ -129,7 +140,6 @@ workflow run_wf {
p_data: reduce_paths(vs.collect{ it[1].p_data }),
fastq_output: vs.collect{ it[1].fastq_output }.flatten().unique(),
html_report: vs.collect{ it[1].html_report }[0], // The report is for all pools
params: vs.collect{ it[1].params }[0],
plain_output: vs.collect{ it[1].plain_output }[0],
project_id: vs.collect{ it[1].project_id }[0],
experiment_id: vs.collect{ it[1].experiment_id }[0]
@@ -137,7 +147,14 @@ workflow run_wf {
]
}
results_publish_ch = grouped_ch
grouped_with_params_list_ch = grouped_ch.combine(save_params_ch)
| map {new_id, grouped_ch_state, save_params_id, save_params_state ->
def new_state = grouped_ch_state + ["run_params": save_params_state.run_params]
return [new_id, new_state]
}
results_publish_ch = grouped_with_params_list_ch
| publish_results.run(
fromState: { id, state ->
def project = (state.plain_output) ? id : "${state.project_id}"
@@ -161,7 +178,7 @@ workflow run_wf {
f_data: state.f_data,
p_data: state.p_data,
html_report: state.html_report,
params: state.params,
run_params: state.run_params,
output: "${id2}"
]
},

View File

@@ -202,18 +202,35 @@ build_info:
engine: "docker|native"
output: "target/executable/eset/create_eset"
executable: "target/executable/eset/create_eset/create_eset"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -225,11 +242,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# create_eset save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -456,9 +456,9 @@ RUN Rscript -e 'options(warn = 2); if (!requireNamespace("remotes", quietly = TR
LABEL org.opencontainers.image.authors="Dries Schaumont, Marijke Van Moerbeke"
LABEL org.opencontainers.image.description="Companion container for running component eset create_eset"
LABEL org.opencontainers.image.created="2025-05-06T14:35:25Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:45Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -179,18 +179,35 @@ build_info:
engine: "docker|native"
output: "target/executable/eset/create_fdata"
executable: "target/executable/eset/create_fdata/create_fdata"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -202,11 +219,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# create_fdata save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
LABEL org.opencontainers.image.authors="Dries Schaumont, Marijke Van Moerbeke"
LABEL org.opencontainers.image.description="Companion container for running component eset create_fdata"
LABEL org.opencontainers.image.created="2025-05-06T14:35:25Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:45Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -193,18 +193,35 @@ build_info:
engine: "docker|native"
output: "target/executable/eset/create_pdata"
executable: "target/executable/eset/create_pdata/create_pdata"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -216,11 +233,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# create_pdata save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
LABEL org.opencontainers.image.authors="Dries Schaumont, Marijke Van Moerbeke"
LABEL org.opencontainers.image.description="Companion container for running component eset create_pdata"
LABEL org.opencontainers.image.created="2025-05-06T14:35:26Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:45Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -151,18 +151,35 @@ build_info:
engine: "docker|native"
output: "target/executable/integration_test_components/htrnaseq/check_eset"
executable: "target/executable/integration_test_components/htrnaseq/check_eset/check_eset"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -174,11 +191,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# check_eset save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -455,9 +455,9 @@ RUN Rscript -e 'options(warn = 2); if (!requireNamespace("remotes", quietly = TR
LABEL org.opencontainers.image.authors="Dries Schaumont"
LABEL org.opencontainers.image.description="Companion container for running component integration_test_components/htrnaseq check_eset"
LABEL org.opencontainers.image.created="2025-05-06T14:35:24Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:44Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -160,18 +160,35 @@ build_info:
engine: "docker|native"
output: "target/executable/integration_test_components/well_demultiplexing/check_cutadapt_output"
executable: "target/executable/integration_test_components/well_demultiplexing/check_cutadapt_output/check_cutadapt_output"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -183,11 +200,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# check_cutadapt_output save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -457,9 +457,9 @@ RUN pip install --upgrade pip && \
LABEL org.opencontainers.image.authors="Dries Schaumont"
LABEL org.opencontainers.image.description="Companion container for running component integration_test_components/well_demultiplexing check_cutadapt_output"
LABEL org.opencontainers.image.created="2025-05-06T14:35:26Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:46Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -135,18 +135,35 @@ build_info:
engine: "docker|native"
output: "target/executable/io/publish_fastqs"
executable: "target/executable/io/publish_fastqs/publish_fastqs"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -158,11 +175,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -2,7 +2,7 @@
# publish_fastqs save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -450,9 +450,9 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/*
LABEL org.opencontainers.image.description="Companion container for running component io publish_fastqs"
LABEL org.opencontainers.image.created="2025-05-06T14:35:25Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:44Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -69,7 +69,7 @@ argument_groups:
multiple: false
multiple_sep: ";"
- type: "file"
name: "--params"
name: "--run_params"
info: null
must_exist: true
create_parent: true
@@ -198,18 +198,35 @@ build_info:
engine: "docker|native"
output: "target/executable/io/publish_results"
executable: "target/executable/io/publish_results/publish_results"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -221,11 +238,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -2,7 +2,7 @@
# publish_results save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -450,9 +450,9 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/*
LABEL org.opencontainers.image.description="Companion container for running component io publish_results"
LABEL org.opencontainers.image.created="2025-05-06T14:35:25Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:44Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER
@@ -597,7 +597,7 @@ function ViashHelp {
echo " --html_report"
echo " type: file, required parameter, file must exist"
echo ""
echo " --params"
echo " --run_params"
echo " type: file, required parameter, file must exist"
echo ""
echo "Output arguments:"
@@ -768,15 +768,15 @@ while [[ $# -gt 0 ]]; do
VIASH_PAR_HTML_REPORT=$(ViashRemoveFlags "$1")
shift 1
;;
--params)
[ -n "$VIASH_PAR_PARAMS" ] && ViashError Bad arguments for option \'--params\': \'$VIASH_PAR_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_PARAMS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --params. Use "--help" to get more information on the parameters. && exit 1
--run_params)
[ -n "$VIASH_PAR_RUN_PARAMS" ] && ViashError Bad arguments for option \'--run_params\': \'$VIASH_PAR_RUN_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_RUN_PARAMS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --run_params. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--params=*)
[ -n "$VIASH_PAR_PARAMS" ] && ViashError Bad arguments for option \'--params=*\': \'$VIASH_PAR_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_PARAMS=$(ViashRemoveFlags "$1")
--run_params=*)
[ -n "$VIASH_PAR_RUN_PARAMS" ] && ViashError Bad arguments for option \'--run_params=*\': \'$VIASH_PAR_RUN_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_RUN_PARAMS=$(ViashRemoveFlags "$1")
shift 1
;;
--output)
@@ -990,8 +990,8 @@ if [ -z ${VIASH_PAR_HTML_REPORT+x} ]; then
ViashError '--html_report' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_PAR_PARAMS+x} ]; then
ViashError '--params' is a required argument. Use "--help" to get more information on the parameters.
if [ -z ${VIASH_PAR_RUN_PARAMS+x} ]; then
ViashError '--run_params' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_META_NAME+x} ]; then
@@ -1101,8 +1101,8 @@ if [ ! -z "$VIASH_PAR_HTML_REPORT" ] && [ ! -e "$VIASH_PAR_HTML_REPORT" ]; then
ViashError "Input file '$VIASH_PAR_HTML_REPORT' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_PARAMS" ] && [ ! -e "$VIASH_PAR_PARAMS" ]; then
ViashError "Input file '$VIASH_PAR_PARAMS' does not exist."
if [ ! -z "$VIASH_PAR_RUN_PARAMS" ] && [ ! -e "$VIASH_PAR_RUN_PARAMS" ]; then
ViashError "Input file '$VIASH_PAR_RUN_PARAMS' does not exist."
exit 1
fi
@@ -1267,9 +1267,9 @@ if [ ! -z "$VIASH_PAR_HTML_REPORT" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_HTML_REPORT")" )
VIASH_PAR_HTML_REPORT=$(ViashDockerAutodetectMount "$VIASH_PAR_HTML_REPORT")
fi
if [ ! -z "$VIASH_PAR_PARAMS" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_PARAMS")" )
VIASH_PAR_PARAMS=$(ViashDockerAutodetectMount "$VIASH_PAR_PARAMS")
if [ ! -z "$VIASH_PAR_RUN_PARAMS" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_RUN_PARAMS")" )
VIASH_PAR_RUN_PARAMS=$(ViashDockerAutodetectMount "$VIASH_PAR_RUN_PARAMS")
fi
if [ ! -z "$VIASH_PAR_OUTPUT" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT")" )
@@ -1352,7 +1352,7 @@ $( if [ ! -z ${VIASH_PAR_ESET+x} ]; then echo "${VIASH_PAR_ESET}" | sed "s#'#'\"
$( if [ ! -z ${VIASH_PAR_F_DATA+x} ]; then echo "${VIASH_PAR_F_DATA}" | sed "s#'#'\"'\"'#g;s#.*#par_f_data='&'#" ; else echo "# par_f_data="; fi )
$( if [ ! -z ${VIASH_PAR_P_DATA+x} ]; then echo "${VIASH_PAR_P_DATA}" | sed "s#'#'\"'\"'#g;s#.*#par_p_data='&'#" ; else echo "# par_p_data="; fi )
$( if [ ! -z ${VIASH_PAR_HTML_REPORT+x} ]; then echo "${VIASH_PAR_HTML_REPORT}" | sed "s#'#'\"'\"'#g;s#.*#par_html_report='&'#" ; else echo "# par_html_report="; fi )
$( if [ ! -z ${VIASH_PAR_PARAMS+x} ]; then echo "${VIASH_PAR_PARAMS}" | sed "s#'#'\"'\"'#g;s#.*#par_params='&'#" ; else echo "# par_params="; fi )
$( if [ ! -z ${VIASH_PAR_RUN_PARAMS+x} ]; then echo "${VIASH_PAR_RUN_PARAMS}" | sed "s#'#'\"'\"'#g;s#.*#par_run_params='&'#" ; else echo "# par_run_params="; fi )
$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\"'\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi )
$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi )
$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi )
@@ -1417,7 +1417,7 @@ done
cp -rL "\$par_html_report" "\$par_output/"
cp -rL "\$par_params" "\$par_output/"
cp -rL "\$par_run_params" "\$par_output/"
VIASHMAIN
bash "\$tempscript" &
wait "\$!"
@@ -1509,8 +1509,8 @@ if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
if [ ! -z "$VIASH_PAR_HTML_REPORT" ]; then
VIASH_PAR_HTML_REPORT=$(ViashDockerStripAutomount "$VIASH_PAR_HTML_REPORT")
fi
if [ ! -z "$VIASH_PAR_PARAMS" ]; then
VIASH_PAR_PARAMS=$(ViashDockerStripAutomount "$VIASH_PAR_PARAMS")
if [ ! -z "$VIASH_PAR_RUN_PARAMS" ]; then
VIASH_PAR_RUN_PARAMS=$(ViashDockerStripAutomount "$VIASH_PAR_RUN_PARAMS")
fi
if [ ! -z "$VIASH_PAR_OUTPUT" ]; then
VIASH_PAR_OUTPUT=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT")

View File

@@ -281,18 +281,35 @@ build_info:
engine: "docker|native"
output: "target/executable/parallel_map"
executable: "target/executable/parallel_map/parallel_map"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -304,11 +321,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -2,7 +2,7 @@
# parallel_map save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -461,9 +461,9 @@ ENV STAR_BINARY=STAR
COPY STAR /usr/local/bin/$STAR_BINARY
LABEL org.opencontainers.image.authors="Dries Schaumont, Toni Verbeiren"
LABEL org.opencontainers.image.description="Companion container for running component parallel_map"
LABEL org.opencontainers.image.created="2025-05-06T14:35:26Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:46Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -164,6 +164,12 @@ engines:
- "procps"
- "pandoc"
interactive: false
- type: "r"
script:
- "install.packages(\"BiocManager\")"
- "BiocManager::install(version = \"3.21\", type = \"source\", checkBuilt = TRUE)"
bioc_force_install: false
warnings_as_errors: true
- type: "r"
cran:
- "ggplot2"
@@ -205,18 +211,35 @@ build_info:
engine: "docker|native"
output: "target/executable/report/create_report"
executable: "target/executable/report/create_report/create_report"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -228,11 +251,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# create_report save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -453,6 +453,9 @@ RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y procps pandoc && \
rm -rf /var/lib/apt/lists/*
RUN Rscript -e 'options(warn = 2); install.packages("BiocManager")' && \
Rscript -e 'options(warn = 2); BiocManager::install(version = "3.21", type = "source", checkBuilt = TRUE)'
RUN Rscript -e 'options(warn = 2); if (!requireNamespace("remotes", quietly = TRUE)) install.packages("remotes")' && \
Rscript -e 'options(warn = 2); if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")' && \
Rscript -e 'options(warn = 2); if (!requireNamespace("Biobase", quietly = TRUE)) BiocManager::install("Biobase")' && \
@@ -462,9 +465,9 @@ RUN Rscript -e 'options(warn = 2); if (!requireNamespace("remotes", quietly = TR
LABEL org.opencontainers.image.authors="Dries Schaumont, Marijke Van Moerbeke"
LABEL org.opencontainers.image.description="Companion container for running component report create_report"
LABEL org.opencontainers.image.created="2025-05-06T14:35:26Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:45Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -283,15 +283,31 @@ plateLayout <- function(
if (is.null(colours)) {
colours <- tryCatch({
colorRamp2(
circlize::colorRamp2(
breaks = breaks,
colors = brewer.pal(length(breaks), "Purples")
)
},
error = function(cond) {
return(c("#9370DB", "white"))
error = function(cond){
message("Recomputed breaks for proper colour mapping")
breakValues <- plateValues$values
breakValues[which(is.na(breakValues))] <- 0
if (all(breakValues >= 0)) {
breaks <- computeBreaks(7, max(plateValues$values, na.rm = TRUE))
} else {
breaks <- quantile(plateValues$values, probs = seq(0, 1, 0.125))
}
circlize::colorRamp2(
breaks = breaks,
colors = brewer.pal(length(breaks), "Purples")
)
})
}
ht <- Heatmap(
plateValues$values,
column_title = mainTitle, column_title_side = "top",
@@ -425,6 +441,7 @@ computeBreaks <- function(nBreaks, variable) {
)
coefExp <- c(exp(coefSystem[1]), coefSystem[2])
breaks <- coefExp[1] * exp((1:(nBreaks - 1)) * coefExp[2])
breaks <- unique(c(0, breaks))
}
return(c(0, breaks))
}
return(breaks)
}

View File

@@ -200,18 +200,35 @@ build_info:
engine: "docker|native"
output: "target/executable/stats/combine_star_logs"
executable: "target/executable/stats/combine_star_logs/combine_star_logs"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -223,11 +240,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# combine_star_logs save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -457,9 +457,9 @@ RUN pip install --upgrade pip && \
LABEL org.opencontainers.image.authors="Dries Schaumont"
LABEL org.opencontainers.image.description="Companion container for running component stats combine_star_logs"
LABEL org.opencontainers.image.created="2025-05-06T14:35:24Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:44Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -184,18 +184,35 @@ build_info:
engine: "docker|native"
output: "target/executable/stats/generate_pool_statistics"
executable: "target/executable/stats/generate_pool_statistics/generate_pool_statistics"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -207,11 +224,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# generate_pool_statistics save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
LABEL org.opencontainers.image.authors="Dries Schaumont, Marijke Van Moerbeke"
LABEL org.opencontainers.image.description="Companion container for running component stats generate_pool_statistics"
LABEL org.opencontainers.image.created="2025-05-06T14:35:25Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:44Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -266,18 +266,35 @@ build_info:
engine: "docker|native"
output: "target/executable/stats/generate_well_statistics"
executable: "target/executable/stats/generate_well_statistics/generate_well_statistics"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -289,11 +306,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -2,7 +2,7 @@
# generate_well_statistics save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -461,9 +461,9 @@ RUN pip install --upgrade pip && \
LABEL org.opencontainers.image.authors="Dries Schaumont, Marijke Van Moerbeke"
LABEL org.opencontainers.image.description="Companion container for running component stats generate_well_statistics"
LABEL org.opencontainers.image.created="2025-05-06T14:35:25Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:44Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -147,18 +147,35 @@ build_info:
engine: "docker|native"
output: "target/executable/utils/save_params"
executable: "target/executable/utils/save_params/save_params"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -170,11 +187,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -2,7 +2,7 @@
# save_params save-params
#
# This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
# This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
# Intuitive.
#
@@ -453,9 +453,9 @@ RUN pip install --upgrade pip && \
pip install --upgrade --no-cache-dir "pyyaml"
LABEL org.opencontainers.image.description="Companion container for running component utils save_params"
LABEL org.opencontainers.image.created="2025-05-06T14:35:26Z"
LABEL org.opencontainers.image.created="2025-05-08T12:21:46Z"
LABEL org.opencontainers.image.source="https://github.com/viash-hub/htrnaseq"
LABEL org.opencontainers.image.revision="cc910b428428dd32f183df0c2009fc36e75394e0"
LABEL org.opencontainers.image.revision="dbca5cbb3a338287f516c79705fc607bcf0905f7"
LABEL org.opencontainers.image.version="save-params"
VIASHDOCKER

View File

@@ -202,18 +202,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/eset/create_eset"
executable: "target/nextflow/eset/create_eset/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -225,11 +242,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// create_eset save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -86,64 +86,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -155,10 +147,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3308,14 +3303,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/eset/create_eset",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3324,7 +3321,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3335,11 +3332,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3358,7 +3357,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.R"
cat > "$tempscript" << VIASHMAIN
library(Biobase)
library(data.table)
@@ -4156,7 +4155,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -4170,6 +4169,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -179,18 +179,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/eset/create_fdata"
executable: "target/nextflow/eset/create_fdata/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -202,11 +219,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// create_fdata save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -86,64 +86,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -155,10 +147,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3278,14 +3273,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/eset/create_fdata",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3294,7 +3291,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3305,11 +3302,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3328,7 +3327,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.py"
cat > "$tempscript" << VIASHMAIN
import logging
import pandas as pd
@@ -3821,7 +3820,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3835,6 +3834,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -193,18 +193,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/eset/create_pdata"
executable: "target/nextflow/eset/create_pdata/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -216,11 +233,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// create_pdata save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -86,64 +86,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -155,10 +147,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3292,14 +3287,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/eset/create_pdata",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3308,7 +3305,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3319,11 +3316,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3342,7 +3341,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.py"
cat > "$tempscript" << VIASHMAIN
from itertools import batched
import pandas as pd
@@ -3761,7 +3760,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3775,6 +3774,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -151,18 +151,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/integration_test_components/htrnaseq/check_eset"
executable: "target/nextflow/integration_test_components/htrnaseq/check_eset/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -174,11 +191,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// check_eset save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -85,64 +85,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -154,10 +146,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3232,14 +3227,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/integration_test_components/htrnaseq/check_eset",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3248,7 +3245,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3259,11 +3256,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3282,7 +3281,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.R"
cat > "$tempscript" << VIASHMAIN
## VIASH START
# The following code has been auto-generated by Viash.
@@ -3855,7 +3854,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3869,6 +3868,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -160,18 +160,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/integration_test_components/well_demultiplexing/check_cutadapt_output"
executable: "target/nextflow/integration_test_components/well_demultiplexing/check_cutadapt_output/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -183,11 +200,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// check_cutadapt_output save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -85,64 +85,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -154,10 +146,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3243,14 +3238,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/integration_test_components/well_demultiplexing/check_cutadapt_output",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3259,7 +3256,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3270,11 +3267,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3293,7 +3292,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.py"
cat > "$tempscript" << VIASHMAIN
import dnaio
from operator import itemgetter
@@ -3735,7 +3734,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3749,6 +3748,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -135,18 +135,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/io/publish_fastqs"
executable: "target/nextflow/io/publish_fastqs/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -158,11 +175,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// publish_fastqs save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -82,64 +82,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -151,10 +143,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3206,14 +3201,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/io/publish_fastqs",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3222,7 +3219,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3233,11 +3230,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3631,7 +3630,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3645,6 +3644,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -69,7 +69,7 @@ argument_groups:
multiple: false
multiple_sep: ";"
- type: "file"
name: "--params"
name: "--run_params"
info: null
must_exist: true
create_parent: true
@@ -198,18 +198,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/io/publish_results"
executable: "target/nextflow/io/publish_results/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -221,11 +238,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// publish_results save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -82,64 +82,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -151,10 +143,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3115,7 +3110,7 @@ meta = [
},
{
"type" : "file",
"name" : "--params",
"name" : "--run_params",
"must_exist" : true,
"create_parent" : true,
"required" : true,
@@ -3276,14 +3271,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/io/publish_results",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3292,7 +3289,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3303,11 +3300,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3337,7 +3336,7 @@ $( if [ ! -z ${VIASH_PAR_ESET+x} ]; then echo "${VIASH_PAR_ESET}" | sed "s#'#'\\
$( if [ ! -z ${VIASH_PAR_F_DATA+x} ]; then echo "${VIASH_PAR_F_DATA}" | sed "s#'#'\\"'\\"'#g;s#.*#par_f_data='&'#" ; else echo "# par_f_data="; fi )
$( if [ ! -z ${VIASH_PAR_P_DATA+x} ]; then echo "${VIASH_PAR_P_DATA}" | sed "s#'#'\\"'\\"'#g;s#.*#par_p_data='&'#" ; else echo "# par_p_data="; fi )
$( if [ ! -z ${VIASH_PAR_HTML_REPORT+x} ]; then echo "${VIASH_PAR_HTML_REPORT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_html_report='&'#" ; else echo "# par_html_report="; fi )
$( if [ ! -z ${VIASH_PAR_PARAMS+x} ]; then echo "${VIASH_PAR_PARAMS}" | sed "s#'#'\\"'\\"'#g;s#.*#par_params='&'#" ; else echo "# par_params="; fi )
$( if [ ! -z ${VIASH_PAR_RUN_PARAMS+x} ]; then echo "${VIASH_PAR_RUN_PARAMS}" | sed "s#'#'\\"'\\"'#g;s#.*#par_run_params='&'#" ; else echo "# par_run_params="; fi )
$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi )
$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi )
$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi )
@@ -3402,7 +3401,7 @@ done
cp -rL "\\$par_html_report" "\\$par_output/"
cp -rL "\\$par_params" "\\$par_output/"
cp -rL "\\$par_run_params" "\\$par_output/"
VIASHMAIN
bash "$tempscript"
'''
@@ -3737,7 +3736,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3751,6 +3750,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -84,7 +84,7 @@
,
"params": {
"run_params": {
"type":
"string",
"description": "Type: `file`, required. ",

View File

@@ -281,18 +281,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/parallel_map"
executable: "target/nextflow/parallel_map/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -304,11 +321,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// parallel_map save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -86,64 +86,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -155,10 +147,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3378,14 +3373,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/parallel_map",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3394,7 +3391,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3405,11 +3402,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -4120,7 +4119,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -4134,6 +4133,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -164,6 +164,12 @@ engines:
- "procps"
- "pandoc"
interactive: false
- type: "r"
script:
- "install.packages(\"BiocManager\")"
- "BiocManager::install(version = \"3.21\", type = \"source\", checkBuilt = TRUE)"
bioc_force_install: false
warnings_as_errors: true
- type: "r"
cran:
- "ggplot2"
@@ -205,18 +211,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/report/create_report"
executable: "target/nextflow/report/create_report/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -228,11 +251,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// create_report save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -86,64 +86,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -155,10 +147,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3262,6 +3257,15 @@ meta = [
],
"interactive" : false
},
{
"type" : "r",
"script" : [
"install.packages(\\"BiocManager\\")",
"BiocManager::install(version = \\"3.21\\", type = \\"source\\", checkBuilt = TRUE)"
],
"bioc_force_install" : false,
"warnings_as_errors" : true
},
{
"type" : "r",
"cran" : [
@@ -3313,14 +3317,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/report/create_report",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3329,7 +3335,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3340,11 +3346,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3363,7 +3371,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.R"
cat > "$tempscript" << VIASHMAIN
## VIASH START
# The following code has been auto-generated by Viash.
@@ -3771,7 +3779,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3785,6 +3793,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -283,15 +283,31 @@ plateLayout <- function(
if (is.null(colours)) {
colours <- tryCatch({
colorRamp2(
circlize::colorRamp2(
breaks = breaks,
colors = brewer.pal(length(breaks), "Purples")
)
},
error = function(cond) {
return(c("#9370DB", "white"))
error = function(cond){
message("Recomputed breaks for proper colour mapping")
breakValues <- plateValues$values
breakValues[which(is.na(breakValues))] <- 0
if (all(breakValues >= 0)) {
breaks <- computeBreaks(7, max(plateValues$values, na.rm = TRUE))
} else {
breaks <- quantile(plateValues$values, probs = seq(0, 1, 0.125))
}
circlize::colorRamp2(
breaks = breaks,
colors = brewer.pal(length(breaks), "Purples")
)
})
}
ht <- Heatmap(
plateValues$values,
column_title = mainTitle, column_title_side = "top",
@@ -425,6 +441,7 @@ computeBreaks <- function(nBreaks, variable) {
)
coefExp <- c(exp(coefSystem[1]), coefSystem[2])
breaks <- coefExp[1] * exp((1:(nBreaks - 1)) * coefExp[2])
breaks <- unique(c(0, breaks))
}
return(c(0, breaks))
}
return(breaks)
}

View File

@@ -200,18 +200,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/stats/combine_star_logs"
executable: "target/nextflow/stats/combine_star_logs/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -223,11 +240,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// combine_star_logs save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -85,64 +85,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -154,10 +146,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3294,14 +3289,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/stats/combine_star_logs",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3310,7 +3307,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3321,11 +3318,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3344,7 +3343,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.py"
cat > "$tempscript" << VIASHMAIN
import logging
import pandas as pd
@@ -3926,7 +3925,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3940,6 +3939,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

View File

@@ -27,7 +27,7 @@ process {
withLabel: verylowmem { memory = { get_memory( 4.GB * task.attempt ) } }
withLabel: lowmem { memory = { get_memory( 8.GB * task.attempt ) } }
withLabel: midmem { memory = { get_memory( 16.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 40.GB * task.attempt ) } }
withLabel: highmem { memory = { get_memory( 64.GB * task.attempt ) } }
}

View File

@@ -184,18 +184,35 @@ build_info:
engine: "docker|native"
output: "target/nextflow/stats/generate_pool_statistics"
executable: "target/nextflow/stats/generate_pool_statistics/main.nf"
viash_version: "0.9.2"
git_commit: "cc910b428428dd32f183df0c2009fc36e75394e0"
viash_version: "0.9.4"
git_commit: "dbca5cbb3a338287f516c79705fc607bcf0905f7"
git_remote: "https://github.com/viash-hub/htrnaseq"
git_tag: "v0.7.2-21-gdbca5cb"
package_config:
name: "htrnaseq"
version: "save-params"
description: "High-throughput pipeline [WIP]\n"
summary: "A workflow for high-throughput RNA-seq data analyses.\n"
description: "This workflow is designed to process high-throughput RNA-seq data,\
\ where every\nwell of a microarray plate is a sample. A fasta file provided as\
\ input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow\
\ is built in a modular fashion, where most of the base functionality\nis provided\
\ by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\n\
supplemented by custom base components and workflow components in this package.\n\
\nThe full workflow is split in two major subworkflows that can be run independently:\n\
\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per\
\ well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate\
\ QC reports.\n\nEach of those can be started individually, or the full workflow\
\ can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq)\
\ \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner)\
\ where a\nnumber of choices (input/output structure and location) have been made.\n\
\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other\
\ formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex)\
\ first.\n"
info:
test_resources:
- path: "gs://viash-hub-test-data/htrnaseq/v1/"
dest: "resources_test"
viash_version: "0.9.2"
viash_version: "0.9.4"
source: "src"
target: "target"
config_mods:
@@ -207,11 +224,13 @@ package_config:
- ".engines[.type == 'docker'].target_tag := 'save-params'"
keywords:
- "bioinformatics"
- "sequence"
- "sequencing"
- "high-throughput"
- "RNAseq"
- "mapping"
- "counting"
- "pipeline"
- "workflow"
license: "MIT"
organization: "vsh"
links:

View File

@@ -1,6 +1,6 @@
// generate_pool_statistics save-params
//
// This wrapper script is auto-generated by viash 0.9.2 and is thus a derivative
// This wrapper script is auto-generated by viash 0.9.4 and is thus a derivative
// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data
// Intuitive.
//
@@ -86,64 +86,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
foundClass = "List[${e.foundClass}]"
}
} else if (par.type == "string") {
// cast to string if need be
// cast to string if need be. only cast if the value is a GString
if (value instanceof GString) {
value = value.toString()
value = value as String
}
expectedClass = value instanceof String ? null : "String"
} else if (par.type == "integer") {
// cast to integer if need be
if (value instanceof String) {
if (value !instanceof Integer) {
try {
value = value.toInteger()
value = value as Integer
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Integer"
}
}
if (value instanceof java.math.BigInteger) {
value = value.intValue()
}
expectedClass = value instanceof Integer ? null : "Integer"
} else if (par.type == "long") {
// cast to long if need be
if (value instanceof String) {
if (value !instanceof Long) {
try {
value = value.toLong()
value = value as Long
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Long"
}
}
if (value instanceof Integer) {
value = value.toLong()
}
expectedClass = value instanceof Long ? null : "Long"
} else if (par.type == "double") {
// cast to double if need be
if (value instanceof String) {
if (value !instanceof Double) {
try {
value = value.toDouble()
value = value as Double
} catch (NumberFormatException e) {
// do nothing
expectedClass = "Double"
}
}
if (value instanceof java.math.BigDecimal) {
value = value.doubleValue()
} else if (par.type == "float") {
// cast to float if need be
if (value !instanceof Float) {
try {
value = value as Float
} catch (NumberFormatException e) {
expectedClass = "Float"
}
}
if (value instanceof Float) {
value = value.toDouble()
}
expectedClass = value instanceof Double ? null : "Double"
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
// cast to boolean if need be
if (value instanceof String) {
def valueLower = value.toLowerCase()
if (valueLower == "true") {
value = true
} else if (valueLower == "false") {
value = false
if (value !instanceof Boolean) {
try {
value = value as Boolean
} catch (Exception e) {
expectedClass = "Boolean"
}
}
expectedClass = value instanceof Boolean ? null : "Boolean"
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
// cast to path if need be
if (value instanceof String) {
@@ -155,10 +147,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
expectedClass = value instanceof Path ? null : "Path"
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
// cast to string if need be
if (value instanceof GString) {
value = value.toString()
if (value !instanceof String) {
try {
value = value as String
} catch (Exception e) {
expectedClass = "String"
}
}
expectedClass = value instanceof String ? null : "String"
} else {
// didn't find a match for par.type
expectedClass = par.type
@@ -3278,14 +3273,16 @@ meta = [
"runner" : "nextflow",
"engine" : "docker|native",
"output" : "target/nextflow/stats/generate_pool_statistics",
"viash_version" : "0.9.2",
"git_commit" : "cc910b428428dd32f183df0c2009fc36e75394e0",
"git_remote" : "https://github.com/viash-hub/htrnaseq"
"viash_version" : "0.9.4",
"git_commit" : "dbca5cbb3a338287f516c79705fc607bcf0905f7",
"git_remote" : "https://github.com/viash-hub/htrnaseq",
"git_tag" : "v0.7.2-21-gdbca5cb"
},
"package_config" : {
"name" : "htrnaseq",
"version" : "save-params",
"description" : "High-throughput pipeline [WIP]\n",
"summary" : "A workflow for high-throughput RNA-seq data analyses.\n",
"description" : "This workflow is designed to process high-throughput RNA-seq data, where every\nwell of a microarray plate is a sample. A fasta file provided as input\ndefines the mapping between sample barcodes and wells.\n\nThe workflow is built in a modular fashion, where most of the base functionality\nis provided by components from [`biobox`](https://www.viash-hub.com/packages/biobox/latest)\nsupplemented by custom base components and workflow components in this package.\n\nThe full workflow is split in two major subworkflows that can be run independently:\n\n* **Well-demultiplexing:** Split the input (plate/pool level) fastq files per well.\n* **Mapping, counting and QC:** Run per-well mapping, counting and generate QC reports.\n\nEach of those can be started individually, or the full workflow can be run in two ways:\n\n1. Run the [main workflow](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/htrnaseq) \ncontaining the main functionality.\n2. Run the [(opinionated) `runner`](https://www.viash-hub.com/packages/htrnaseq/v0.3.0/components/workflows/runner) where a\nnumber of choices (input/output structure and location) have been made.\n\nInput for the workflow has to be `fastq` files (zipped or not). For bcl or other formats, please consider running\n[demultiplex](https://www.viash-hub.com/packages/demultiplex) first.\n",
"info" : {
"test_resources" : [
{
@@ -3294,7 +3291,7 @@ meta = [
}
]
},
"viash_version" : "0.9.2",
"viash_version" : "0.9.4",
"source" : "src",
"target" : "target",
"config_mods" : [
@@ -3305,11 +3302,13 @@ meta = [
],
"keywords" : [
"bioinformatics",
"sequence",
"sequencing",
"high-throughput",
"RNAseq",
"mapping",
"counting",
"pipeline"
"pipeline",
"workflow"
],
"license" : "MIT",
"organization" : "vsh",
@@ -3328,7 +3327,7 @@ meta = [
// inner workflow hook
def innerWorkflowFactory(args) {
def rawScript = '''set -e
tempscript=".viash_script.sh"
tempscript=".viash_script.py"
cat > "$tempscript" << VIASHMAIN
import pandas as pd
from pathlib import Path
@@ -3781,7 +3780,7 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
// create process from temp file
def binding = new nextflow.script.ScriptBinding([:])
def session = nextflow.Nextflow.getSession()
def parser = new nextflow.script.ScriptParser(session)
def parser = _getScriptLoader(session)
.setModule(true)
.setBinding(binding)
def moduleScript = parser.runScript(tempFile)
@@ -3795,6 +3794,27 @@ def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) {
return scriptMeta.getProcess(procKey)
}
// use Reflection to get a ScriptParser / ScriptLoader
// <25.02.0-edge: new nextflow.script.ScriptParser(session)
// >=25.02.0-edge: nextflow.script.ScriptLoaderFactory.create(session)
def _getScriptLoader(nextflow.Session session) {
// try using the old method
try {
Class<?> scriptParserClass = Class.forName('nextflow.script.ScriptParser')
return scriptParserClass.getDeclaredConstructor(nextflow.Session).newInstance(session)
} catch (ClassNotFoundException e) {
// else try with the new method
try {
Class<?> scriptLoaderFactoryClass = Class.forName('nextflow.script.ScriptLoaderFactory')
def createMethod = scriptLoaderFactoryClass.getDeclaredMethod('create', nextflow.Session)
return createMethod.invoke(null, session) // null because create is static
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | java.lang.reflect.InvocationTargetException e2) {
// Handle the case where neither class is found
throw new Exception("Neither nextflow.script.ScriptParser nor nextflow.script.ScriptLoaderFactory could be found. Is this a compatible Nextflow version?", e2)
}
}
}
// defaults
meta["defaults"] = [
// key to be used to trace the process and determine output names

Some files were not shown because too many files have changed in this diff Show More