Build branch build/main with version build_main (491efce)
Build pipeline: openpipelines-bio.openpipeline-spatial.build-main-kj8js
Source commit: 491efceaaf
Source message: deploy: 7f820d2607f3e1fabc0183915d1bb427715e18ae
This commit is contained in:
5
CHANGELOG.md
Normal file
5
CHANGELOG.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# openpipeline_spatial 0.0.0
|
||||||
|
|
||||||
|
## NEW FUNCTIONALITY
|
||||||
|
|
||||||
|
* `mapping/spaceranger_count`: Added a spaceranger count component (PR #2).
|
||||||
19
resources_test_scripts/reference_tiny.sh
Executable file
19
resources_test_scripts/reference_tiny.sh
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
# get the root of the directory
|
||||||
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
# ensure that the command below is run from the root of the repository
|
||||||
|
cd "$REPO_ROOT"
|
||||||
|
DIR="resources_test/GRCh38"
|
||||||
|
|
||||||
|
mkdir -p $DIR
|
||||||
|
|
||||||
|
aws s3 sync \
|
||||||
|
--profile di \
|
||||||
|
s3://openpipelines-bio/openpipeline_spatial/resources_test/GRCh38 \
|
||||||
|
"$DIR" \
|
||||||
|
--delete \
|
||||||
|
--dryrun
|
||||||
35
resources_test_scripts/visium_tiny.sh
Normal file
35
resources_test_scripts/visium_tiny.sh
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
# get the root of the directory
|
||||||
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
# Define absolute directory path
|
||||||
|
DIR="$REPO_ROOT/resources_test/visium"
|
||||||
|
|
||||||
|
# from https://www.10xgenomics.com/resources/datasets/human-ovarian-cancer-1-standard
|
||||||
|
mkdir -p "$DIR"
|
||||||
|
|
||||||
|
# Input Files - download to the specific directory
|
||||||
|
curl -o "$DIR/Visium_FFPE_Human_Ovarian_Cancer_fastqs.tar" https://cf.10xgenomics.com/samples/spatial-exp/1.3.0/Visium_FFPE_Human_Ovarian_Cancer/Visium_FFPE_Human_Ovarian_Cancer_fastqs.tar
|
||||||
|
curl -o "$DIR/Visium_FFPE_Human_Ovarian_Cancer_image.jpg" https://cf.10xgenomics.com/samples/spatial-exp/1.3.0/Visium_FFPE_Human_Ovarian_Cancer/Visium_FFPE_Human_Ovarian_Cancer_image.jpg
|
||||||
|
curl -o "$DIR/Visium_FFPE_Human_Ovarian_Cancer_probe_set.csv" https://cf.10xgenomics.com/samples/spatial-exp/1.3.0/Visium_FFPE_Human_Ovarian_Cancer/Visium_FFPE_Human_Ovarian_Cancer_probe_set.csv
|
||||||
|
|
||||||
|
# Extract in the specific directory
|
||||||
|
tar xvf "$DIR/Visium_FFPE_Human_Ovarian_Cancer_fastqs.tar" -C "$DIR"
|
||||||
|
|
||||||
|
# Create subsampled dataset with ImageMagick
|
||||||
|
# https://imagemagick.org/index.php
|
||||||
|
mkdir -p "$DIR/subsampled"
|
||||||
|
convert "$DIR/Visium_FFPE_Human_Ovarian_Cancer_image.jpg" -resize 2000x2000 "$DIR/subsampled/Visium_FFPE_Human_Ovarian_Cancer_image.jpg"
|
||||||
|
for f in "$DIR"/Visium_FFPE_Human_Ovarian_Cancer_fastqs/*L001*R*; do
|
||||||
|
gzip -cdf "$f" | head -n 40000 | gzip -c > "$DIR/subsampled/$(basename "$f")";
|
||||||
|
done
|
||||||
|
|
||||||
|
aws s3 sync \
|
||||||
|
--profile di \
|
||||||
|
"$DIR" \
|
||||||
|
s3://openpipelines-bio/openpipeline_spatial/resources_test/visium \
|
||||||
|
--delete \
|
||||||
|
--dryrun
|
||||||
@@ -5,12 +5,10 @@ set -eo pipefail
|
|||||||
# get the root of the directory
|
# get the root of the directory
|
||||||
REPO_ROOT=$(git rev-parse --show-toplevel)
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
# ensure that the command below is run from the root of the repository
|
# Define absolute directory paths
|
||||||
cd "$REPO_ROOT"
|
DIR="$REPO_ROOT/resources_test/xenium"
|
||||||
|
|
||||||
DIR="resources_test/xenium/"
|
|
||||||
ID="xenium_tiny"
|
ID="xenium_tiny"
|
||||||
OUT="$DIR/$ID/"
|
OUT="$DIR/$ID"
|
||||||
|
|
||||||
# create tempdir
|
# create tempdir
|
||||||
MY_TEMP="${VIASH_TEMP:-/tmp}"
|
MY_TEMP="${VIASH_TEMP:-/tmp}"
|
||||||
@@ -29,11 +27,11 @@ if [ ! -d "$OUT" ]; then
|
|||||||
mv "$TMPDIR/xenium_tiny/Xenium_Prime_Mouse_Ileum_tiny_outs/"* "$OUT/"
|
mv "$TMPDIR/xenium_tiny/Xenium_Prime_Mouse_Ileum_tiny_outs/"* "$OUT/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
viash run src/convert/from_xenium_to_spatialdata/config.vsh.yaml -- \
|
viash run "$REPO_ROOT/src/convert/from_xenium_to_spatialdata/config.vsh.yaml" -- \
|
||||||
--input "$OUT" \
|
--input "$OUT" \
|
||||||
--output "$DIR/$ID.zarr"
|
--output "$DIR/$ID.zarr"
|
||||||
|
|
||||||
viash run src/convert/from_spatialdata_to_h5mu/config.vsh.yaml -- \
|
viash run "$REPO_ROOT/src/convert/from_spatialdata_to_h5mu/config.vsh.yaml" -- \
|
||||||
--input "$DIR/$ID.zarr" \
|
--input "$DIR/$ID.zarr" \
|
||||||
--output "$DIR/$ID.h5mu"
|
--output "$DIR/$ID.h5mu"
|
||||||
|
|
||||||
|
|||||||
208
src/mapping/spaceranger_count/config.vsh.yaml
Normal file
208
src/mapping/spaceranger_count/config.vsh.yaml
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
name: spaceranger_count
|
||||||
|
namespace: mapping
|
||||||
|
description: Count gene expression and protein expression reads from a single capture area.
|
||||||
|
keywords: [spaceranger]
|
||||||
|
links:
|
||||||
|
documentation: https://www.10xgenomics.com/support/software/space-ranger/latest/analysis/running-pipelines/space-ranger-count
|
||||||
|
authors:
|
||||||
|
- __merge__: /src/authors/jakub_majercik.yaml
|
||||||
|
roles: [ author ]
|
||||||
|
argument_groups:
|
||||||
|
- name: Inputs
|
||||||
|
arguments:
|
||||||
|
- type: file
|
||||||
|
name: --gex_reference
|
||||||
|
required: true
|
||||||
|
description: Path of folder containing 10x-compatible reference
|
||||||
|
example: "/path/to/refdata-gex-GRCh38-2020-A"
|
||||||
|
|
||||||
|
- type: file
|
||||||
|
name: --input
|
||||||
|
required: true
|
||||||
|
description: |
|
||||||
|
Path to a directory containing input FASTQ data. Individual FASTQ files should follow the naming convention of 10x Genomics:
|
||||||
|
[Sample Name]_S[Sample Number]_L[Lane Number]_[Read Type]_001.fastq.gz
|
||||||
|
|
||||||
|
Where:
|
||||||
|
[Sample Name] is the name assigned during sample preparation/sequencing
|
||||||
|
S[Sample Number] is the sample index (usually S1, S2, etc.)
|
||||||
|
L[Lane Number] identifies the sequencing lane (L001, L002, etc.)
|
||||||
|
|
||||||
|
[Read Type] will be one of:
|
||||||
|
R1 - Read 1 (contains the spatial barcode and UMI)
|
||||||
|
R2 - Read 2 (contains the actual cDNA sequence)
|
||||||
|
I1 - Index Read 1 (if applicable)
|
||||||
|
I2 - Index Read 2 (if applicable)
|
||||||
|
example: "/path/to/fastq_folder"
|
||||||
|
|
||||||
|
- type: file
|
||||||
|
name: --probe_set
|
||||||
|
required: true
|
||||||
|
description: CSV file specifying the probe set used
|
||||||
|
example: "Visium_Human_Transcriptome_Probe_Set_v2.0_GRCh38-2020-A.csv"
|
||||||
|
|
||||||
|
- type: file
|
||||||
|
name: --cytaimage
|
||||||
|
required: false
|
||||||
|
description: |
|
||||||
|
Brightfield image generated by the CytAssist instrument.
|
||||||
|
When using CytAssist workflow, either this or --image must be provided.
|
||||||
|
example: "cyta_image.tif"
|
||||||
|
|
||||||
|
- type: file
|
||||||
|
name: --image
|
||||||
|
required: false
|
||||||
|
description: |
|
||||||
|
H&E or fluorescence microscope image in TIFF or JPG format.
|
||||||
|
Required for standard Visium workflow, optional when using --cytaimage for CytAssist workflow.
|
||||||
|
example: "brightfield.tif"
|
||||||
|
|
||||||
|
- name: Outputs
|
||||||
|
arguments:
|
||||||
|
- type: file
|
||||||
|
name: --output
|
||||||
|
required: true
|
||||||
|
direction: output
|
||||||
|
description: The folder to store the alignment results
|
||||||
|
example: "/path/to/output"
|
||||||
|
|
||||||
|
- name: Slide Information
|
||||||
|
arguments:
|
||||||
|
- type: string
|
||||||
|
name: --slide
|
||||||
|
description: Visium slide serial number (e.g., 'V10J25-015')
|
||||||
|
required: false
|
||||||
|
example: "V10J25-015"
|
||||||
|
|
||||||
|
- type: string
|
||||||
|
name: --area
|
||||||
|
description: Visium capture area identifier (e.g., 'A1')
|
||||||
|
required: false
|
||||||
|
example: "A1"
|
||||||
|
|
||||||
|
- type: string
|
||||||
|
name: --unknown_slide
|
||||||
|
description: |
|
||||||
|
Use this option if the slide serial number and area were entered incorrectly on the CytAssist
|
||||||
|
instrument and the correct values are unknown. Not compatible with --slide, --area, or
|
||||||
|
--slide-file options
|
||||||
|
required: false
|
||||||
|
choices: [visium-1, visium-2, visium-2-large, visium-hd]
|
||||||
|
|
||||||
|
- type: file
|
||||||
|
name: --slidefile
|
||||||
|
description: Slide design file for offline use
|
||||||
|
required: false
|
||||||
|
example: "slide_design.gpr"
|
||||||
|
|
||||||
|
- type: boolean_true
|
||||||
|
name: --override_id
|
||||||
|
description: Overrides the slide serial number and capture area provided in the Cytassist image metadata
|
||||||
|
|
||||||
|
- name: Image Options
|
||||||
|
arguments:
|
||||||
|
- type: file
|
||||||
|
name: --darkimage
|
||||||
|
description: Multi-channel, dark-background fluorescence image
|
||||||
|
required: false
|
||||||
|
example: "fluorescence.tif"
|
||||||
|
|
||||||
|
- type: file
|
||||||
|
name: --colorizedimage
|
||||||
|
description: Color image representing pre-colored dark-background fluorescence images
|
||||||
|
required: false
|
||||||
|
example: "colored_fluorescence.tif"
|
||||||
|
|
||||||
|
- type: integer
|
||||||
|
name: --dapi_index
|
||||||
|
description: Index of DAPI channel (1-indexed) of fluorescence image
|
||||||
|
required: false
|
||||||
|
example: 1
|
||||||
|
min: 1
|
||||||
|
|
||||||
|
- type: double
|
||||||
|
name: --image_scale
|
||||||
|
description: Microns per microscope image pixel
|
||||||
|
required: false
|
||||||
|
example: 0.65
|
||||||
|
min: 0.01
|
||||||
|
max: 10
|
||||||
|
|
||||||
|
- type: boolean
|
||||||
|
name: --reorient_images
|
||||||
|
default: true
|
||||||
|
description: Whether to rotate and mirror image to align fiducial pattern
|
||||||
|
|
||||||
|
- name: Processing Options
|
||||||
|
arguments:
|
||||||
|
- type: boolean
|
||||||
|
name: --create_bam
|
||||||
|
required: true
|
||||||
|
description: Enable or disable BAM file generation
|
||||||
|
default: true
|
||||||
|
|
||||||
|
- type: boolean_true
|
||||||
|
name: --nosecondary
|
||||||
|
description: Disable secondary analysis (e.g., clustering)
|
||||||
|
|
||||||
|
- type: integer
|
||||||
|
name: --r1_length
|
||||||
|
required: false
|
||||||
|
description: Hard trim the input Read 1 to this length before analysis
|
||||||
|
min: 1
|
||||||
|
|
||||||
|
- type: integer
|
||||||
|
name: --r2_length
|
||||||
|
required: false
|
||||||
|
description: Hard trim the input Read 2 to this length before analysis
|
||||||
|
min: 1
|
||||||
|
|
||||||
|
- type: boolean
|
||||||
|
name: --filter_probes
|
||||||
|
default: true
|
||||||
|
description: Whether to filter the probe set using the "included" column
|
||||||
|
|
||||||
|
- type: integer
|
||||||
|
name: --custom_bin_size
|
||||||
|
description: Bin Visium HD data to specified size in microns (4-100, even values only) in addition to the standard binning size (2 µm, 8 µm, 16 µm)
|
||||||
|
min: 4
|
||||||
|
max: 100
|
||||||
|
|
||||||
|
- name: Input Selection
|
||||||
|
arguments:
|
||||||
|
- type: string
|
||||||
|
name: --project
|
||||||
|
required: false
|
||||||
|
description: Project folder name within mkfastq output
|
||||||
|
|
||||||
|
- type: string
|
||||||
|
name: --sample
|
||||||
|
required: false
|
||||||
|
description: Prefix of FASTQ filenames to select
|
||||||
|
|
||||||
|
- type: integer
|
||||||
|
name: --lanes
|
||||||
|
multiple: true
|
||||||
|
required: false
|
||||||
|
description: Only use FASTQs from selected lanes
|
||||||
|
example: [1,2,3]
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- type: bash_script
|
||||||
|
path: script.sh
|
||||||
|
test_resources:
|
||||||
|
- type: bash_script
|
||||||
|
path: test.sh
|
||||||
|
- path: /resources_test/visium
|
||||||
|
- path: /resources_test/GRCh38
|
||||||
|
engines:
|
||||||
|
- type: docker
|
||||||
|
image: ghcr.io/data-intuitive/spaceranger:3.1
|
||||||
|
setup:
|
||||||
|
- type: docker
|
||||||
|
run: |
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt update && \
|
||||||
|
apt upgrade -y && apt install -y procps && rm -rf /var/lib/apt/lists/*
|
||||||
|
runners:
|
||||||
|
- type: executable
|
||||||
|
- type: nextflow
|
||||||
45
src/mapping/spaceranger_count/script.sh
Normal file
45
src/mapping/spaceranger_count/script.sh
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
unset_if_false=(
|
||||||
|
par_override_id
|
||||||
|
par_nosecondary
|
||||||
|
)
|
||||||
|
|
||||||
|
for par in ${unset_if_false[@]}; do
|
||||||
|
test_val="${!par}"
|
||||||
|
[[ "$test_val" == "false" ]] && unset $par
|
||||||
|
done
|
||||||
|
|
||||||
|
spaceranger count \
|
||||||
|
${par_output:+--id="$par_output"} \
|
||||||
|
${par_gex_reference:+--transcriptome="$par_gex_reference"} \
|
||||||
|
${par_input:+--fastqs="$par_input"} \
|
||||||
|
${par_probe_set:+--probe-set="$par_probe_set"} \
|
||||||
|
${par_cytaimage:+--cytaimage="$par_cytaimage"} \
|
||||||
|
${par_image:+--image="$par_image"} \
|
||||||
|
${par_slide:+--slide="$par_slide"} \
|
||||||
|
${par_area:+--area="$par_area"} \
|
||||||
|
${par_unknown_slide:+--unknown-slide="$par_unknown_slide"} \
|
||||||
|
${par_slidefile:+--slidefile="$par_slidefile"} \
|
||||||
|
${par_override_id:+--override-id} \
|
||||||
|
${par_darkimage:+--darkimage="$par_darkimage"} \
|
||||||
|
${par_colorizedimage:+--colorizedimage="$par_colorizedimage"} \
|
||||||
|
${par_dapi_index:+--dapi-index="$par_dapi_index"} \
|
||||||
|
${par_image_scale:+--image-scale="$par_image_scale"} \
|
||||||
|
${par_reorient_images:+--reorient-images="$par_reorient_images"} \
|
||||||
|
${par_create_bam:+--create-bam="$par_create_bam"} \
|
||||||
|
${par_nosecondary:+--nosecondary} \
|
||||||
|
${par_r1_length:+--r1-length="$par_r1_length"} \
|
||||||
|
${par_r2_length:+--r2-length="$par_r2_length"} \
|
||||||
|
${par_filter_probes:+--filter-probes="$par_filter_probes"} \
|
||||||
|
${par_custom_bin_size:+--custom-bin-size="$par_custom_bin_size"} \
|
||||||
|
${par_project:+--project="$par_project"} \
|
||||||
|
${par_sample:+--sample="$par_sample"} \
|
||||||
|
${par_lanes:+--lanes="$par_lanes"} \
|
||||||
|
${meta_cpus:+--localcores="$meta_cpus"} \
|
||||||
|
${meta_memory_gb:+--localmem=$(($meta_memory_gb-2))}
|
||||||
|
|
||||||
|
mv -f "$par_output"/outs/* "$par_output"/
|
||||||
|
rm -rf "$par_output"/outs
|
||||||
47
src/mapping/spaceranger_count/test.sh
Normal file
47
src/mapping/spaceranger_count/test.sh
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
## VIASH START
|
||||||
|
meta_executable="target/native/spaceranger/spaceranger_count/spaceranger_count"
|
||||||
|
meta_resources_dir="resources_test"
|
||||||
|
## VIASH END
|
||||||
|
|
||||||
|
test_data="$meta_resources_dir/visium"
|
||||||
|
|
||||||
|
echo "> Default test run"
|
||||||
|
"$meta_executable" \
|
||||||
|
--output test_spaceranger \
|
||||||
|
--gex_reference "$meta_resources_dir/GRCh38" \
|
||||||
|
--input "$test_data/subsampled" \
|
||||||
|
--probe_set "$test_data/Visium_FFPE_Human_Ovarian_Cancer_probe_set.csv" \
|
||||||
|
--image "$test_data/subsampled/Visium_FFPE_Human_Ovarian_Cancer_image.jpg" \
|
||||||
|
--unknown_slide visium-1 \
|
||||||
|
--create_bam false
|
||||||
|
|
||||||
|
echo "> Checking outputs..."
|
||||||
|
|
||||||
|
# Define output directory
|
||||||
|
OUT_DIR="test_spaceranger"
|
||||||
|
|
||||||
|
# Function to check if file exists and is non-empty
|
||||||
|
check_file() {
|
||||||
|
local file=$1
|
||||||
|
local description=$2
|
||||||
|
echo -n "Checking $description... "
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "FAIL (file not found)"
|
||||||
|
exit 1
|
||||||
|
elif [ ! -s "$file" ]; then
|
||||||
|
echo "FAIL (file is empty)"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "OK"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check essential files
|
||||||
|
check_file "$OUT_DIR/web_summary.html" "web summary"
|
||||||
|
check_file "$OUT_DIR/metrics_summary.csv" "metrics summary"
|
||||||
|
|
||||||
|
echo "> All tests passed successfully!"
|
||||||
@@ -231,7 +231,7 @@ build_info:
|
|||||||
output: "target/executable/convert/from_cosmx_to_h5mu"
|
output: "target/executable/convert/from_cosmx_to_h5mu"
|
||||||
executable: "target/executable/convert/from_cosmx_to_h5mu/from_cosmx_to_h5mu"
|
executable: "target/executable/convert/from_cosmx_to_h5mu/from_cosmx_to_h5mu"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
|
|||||||
|
|
||||||
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
||||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_cosmx_to_h5mu"
|
LABEL org.opencontainers.image.description="Companion container for running component convert from_cosmx_to_h5mu"
|
||||||
LABEL org.opencontainers.image.created="2025-06-11T09:39:26Z"
|
LABEL org.opencontainers.image.created="2025-07-10T12:30:15Z"
|
||||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
LABEL org.opencontainers.image.revision="9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
LABEL org.opencontainers.image.revision="491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
LABEL org.opencontainers.image.version="build_main"
|
LABEL org.opencontainers.image.version="build_main"
|
||||||
|
|
||||||
VIASHDOCKER
|
VIASHDOCKER
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ build_info:
|
|||||||
output: "target/executable/convert/from_spatialdata_to_h5mu"
|
output: "target/executable/convert/from_spatialdata_to_h5mu"
|
||||||
executable: "target/executable/convert/from_spatialdata_to_h5mu/from_spatialdata_to_h5mu"
|
executable: "target/executable/convert/from_spatialdata_to_h5mu/from_spatialdata_to_h5mu"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
|
|||||||
|
|
||||||
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
||||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_spatialdata_to_h5mu"
|
LABEL org.opencontainers.image.description="Companion container for running component convert from_spatialdata_to_h5mu"
|
||||||
LABEL org.opencontainers.image.created="2025-06-11T09:39:26Z"
|
LABEL org.opencontainers.image.created="2025-07-10T12:30:14Z"
|
||||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
LABEL org.opencontainers.image.revision="9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
LABEL org.opencontainers.image.revision="491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
LABEL org.opencontainers.image.version="build_main"
|
LABEL org.opencontainers.image.version="build_main"
|
||||||
|
|
||||||
VIASHDOCKER
|
VIASHDOCKER
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ build_info:
|
|||||||
output: "target/executable/convert/from_xenium_to_spatialdata"
|
output: "target/executable/convert/from_xenium_to_spatialdata"
|
||||||
executable: "target/executable/convert/from_xenium_to_spatialdata/from_xenium_to_spatialdata"
|
executable: "target/executable/convert/from_xenium_to_spatialdata/from_xenium_to_spatialdata"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
|
|||||||
|
|
||||||
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
||||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_xenium_to_spatialdata"
|
LABEL org.opencontainers.image.description="Companion container for running component convert from_xenium_to_spatialdata"
|
||||||
LABEL org.opencontainers.image.created="2025-06-11T09:39:25Z"
|
LABEL org.opencontainers.image.created="2025-07-10T12:30:14Z"
|
||||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
LABEL org.opencontainers.image.revision="9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
LABEL org.opencontainers.image.revision="491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
LABEL org.opencontainers.image.version="build_main"
|
LABEL org.opencontainers.image.version="build_main"
|
||||||
|
|
||||||
VIASHDOCKER
|
VIASHDOCKER
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ build_info:
|
|||||||
output: "target/executable/filter/subset_cosmx"
|
output: "target/executable/filter/subset_cosmx"
|
||||||
executable: "target/executable/filter/subset_cosmx/subset_cosmx"
|
executable: "target/executable/filter/subset_cosmx/subset_cosmx"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
|
|||||||
|
|
||||||
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
LABEL org.opencontainers.image.authors="Dorien Roosen, Weiwei Schultz"
|
||||||
LABEL org.opencontainers.image.description="Companion container for running component filter subset_cosmx"
|
LABEL org.opencontainers.image.description="Companion container for running component filter subset_cosmx"
|
||||||
LABEL org.opencontainers.image.created="2025-06-11T09:39:25Z"
|
LABEL org.opencontainers.image.created="2025-07-10T12:30:14Z"
|
||||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
LABEL org.opencontainers.image.revision="9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
LABEL org.opencontainers.image.revision="491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
LABEL org.opencontainers.image.version="build_main"
|
LABEL org.opencontainers.image.version="build_main"
|
||||||
|
|
||||||
VIASHDOCKER
|
VIASHDOCKER
|
||||||
|
|||||||
457
target/executable/mapping/spaceranger_count/.config.vsh.yaml
Normal file
457
target/executable/mapping/spaceranger_count/.config.vsh.yaml
Normal file
@@ -0,0 +1,457 @@
|
|||||||
|
name: "spaceranger_count"
|
||||||
|
namespace: "mapping"
|
||||||
|
version: "build_main"
|
||||||
|
authors:
|
||||||
|
- name: "Jakub Majercik"
|
||||||
|
roles:
|
||||||
|
- "author"
|
||||||
|
info:
|
||||||
|
role: "Contributor"
|
||||||
|
links:
|
||||||
|
email: "jakub@data-intuitive.com"
|
||||||
|
github: "jakubmajercik"
|
||||||
|
linkedin: "jakubmajercik"
|
||||||
|
organizations:
|
||||||
|
- name: "Data Intuitive"
|
||||||
|
href: "https://www.data-intuitive.com"
|
||||||
|
role: "Bioinformatics Engineer"
|
||||||
|
argument_groups:
|
||||||
|
- name: "Inputs"
|
||||||
|
arguments:
|
||||||
|
- type: "file"
|
||||||
|
name: "--gex_reference"
|
||||||
|
description: "Path of folder containing 10x-compatible reference"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "/path/to/refdata-gex-GRCh38-2020-A"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--input"
|
||||||
|
description: "Path to a directory containing input FASTQ data. Individual FASTQ\
|
||||||
|
\ files should follow the naming convention of 10x Genomics:\n[Sample Name]_S[Sample\
|
||||||
|
\ Number]_L[Lane Number]_[Read Type]_001.fastq.gz\n\nWhere:\n[Sample Name] is\
|
||||||
|
\ the name assigned during sample preparation/sequencing\nS[Sample Number] is\
|
||||||
|
\ the sample index (usually S1, S2, etc.)\nL[Lane Number] identifies the sequencing\
|
||||||
|
\ lane (L001, L002, etc.)\n\n[Read Type] will be one of:\nR1 - Read 1 (contains\
|
||||||
|
\ the spatial barcode and UMI)\nR2 - Read 2 (contains the actual cDNA sequence)\n\
|
||||||
|
I1 - Index Read 1 (if applicable)\nI2 - Index Read 2 (if applicable)\n"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "/path/to/fastq_folder"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--probe_set"
|
||||||
|
description: "CSV file specifying the probe set used"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "Visium_Human_Transcriptome_Probe_Set_v2.0_GRCh38-2020-A.csv"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--cytaimage"
|
||||||
|
description: "Brightfield image generated by the CytAssist instrument. \nWhen\
|
||||||
|
\ using CytAssist workflow, either this or --image must be provided.\n"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "cyta_image.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--image"
|
||||||
|
description: "H&E or fluorescence microscope image in TIFF or JPG format. \nRequired\
|
||||||
|
\ for standard Visium workflow, optional when using --cytaimage for CytAssist\
|
||||||
|
\ workflow.\n"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "brightfield.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Outputs"
|
||||||
|
arguments:
|
||||||
|
- type: "file"
|
||||||
|
name: "--output"
|
||||||
|
description: "The folder to store the alignment results"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "/path/to/output"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "output"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Slide Information"
|
||||||
|
arguments:
|
||||||
|
- type: "string"
|
||||||
|
name: "--slide"
|
||||||
|
description: "Visium slide serial number (e.g., 'V10J25-015')"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "V10J25-015"
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "string"
|
||||||
|
name: "--area"
|
||||||
|
description: "Visium capture area identifier (e.g., 'A1')"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "A1"
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "string"
|
||||||
|
name: "--unknown_slide"
|
||||||
|
description: "Use this option if the slide serial number and area were entered\
|
||||||
|
\ incorrectly on the CytAssist \ninstrument and the correct values are unknown.\
|
||||||
|
\ Not compatible with --slide, --area, or \n--slide-file options\n"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
choices:
|
||||||
|
- "visium-1"
|
||||||
|
- "visium-2"
|
||||||
|
- "visium-2-large"
|
||||||
|
- "visium-hd"
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--slidefile"
|
||||||
|
description: "Slide design file for offline use"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "slide_design.gpr"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean_true"
|
||||||
|
name: "--override_id"
|
||||||
|
description: "Overrides the slide serial number and capture area provided in the\
|
||||||
|
\ Cytassist image metadata"
|
||||||
|
info: null
|
||||||
|
direction: "input"
|
||||||
|
- name: "Image Options"
|
||||||
|
arguments:
|
||||||
|
- type: "file"
|
||||||
|
name: "--darkimage"
|
||||||
|
description: "Multi-channel, dark-background fluorescence image"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "fluorescence.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--colorizedimage"
|
||||||
|
description: "Color image representing pre-colored dark-background fluorescence\
|
||||||
|
\ images"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "colored_fluorescence.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--dapi_index"
|
||||||
|
description: "Index of DAPI channel (1-indexed) of fluorescence image"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- 1
|
||||||
|
required: false
|
||||||
|
min: 1
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "double"
|
||||||
|
name: "--image_scale"
|
||||||
|
description: "Microns per microscope image pixel"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- 0.65
|
||||||
|
required: false
|
||||||
|
min: 0.01
|
||||||
|
max: 10.0
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean"
|
||||||
|
name: "--reorient_images"
|
||||||
|
description: "Whether to rotate and mirror image to align fiducial pattern"
|
||||||
|
info: null
|
||||||
|
default:
|
||||||
|
- true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Processing Options"
|
||||||
|
arguments:
|
||||||
|
- type: "boolean"
|
||||||
|
name: "--create_bam"
|
||||||
|
description: "Enable or disable BAM file generation"
|
||||||
|
info: null
|
||||||
|
default:
|
||||||
|
- true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean_true"
|
||||||
|
name: "--nosecondary"
|
||||||
|
description: "Disable secondary analysis (e.g., clustering)"
|
||||||
|
info: null
|
||||||
|
direction: "input"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--r1_length"
|
||||||
|
description: "Hard trim the input Read 1 to this length before analysis"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
min: 1
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--r2_length"
|
||||||
|
description: "Hard trim the input Read 2 to this length before analysis"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
min: 1
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean"
|
||||||
|
name: "--filter_probes"
|
||||||
|
description: "Whether to filter the probe set using the \"included\" column"
|
||||||
|
info: null
|
||||||
|
default:
|
||||||
|
- true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--custom_bin_size"
|
||||||
|
description: "Bin Visium HD data to specified size in microns (4-100, even values\
|
||||||
|
\ only) in addition to the standard binning size (2 µm, 8 µm, 16 µm)"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
min: 4
|
||||||
|
max: 100
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Input Selection"
|
||||||
|
arguments:
|
||||||
|
- type: "string"
|
||||||
|
name: "--project"
|
||||||
|
description: "Project folder name within mkfastq output"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "string"
|
||||||
|
name: "--sample"
|
||||||
|
description: "Prefix of FASTQ filenames to select"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--lanes"
|
||||||
|
description: "Only use FASTQs from selected lanes"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: true
|
||||||
|
multiple_sep: ";"
|
||||||
|
resources:
|
||||||
|
- type: "bash_script"
|
||||||
|
path: "script.sh"
|
||||||
|
is_executable: true
|
||||||
|
- type: "file"
|
||||||
|
path: "nextflow_labels.config"
|
||||||
|
dest: "nextflow_labels.config"
|
||||||
|
description: "Count gene expression and protein expression reads from a single capture\
|
||||||
|
\ area."
|
||||||
|
test_resources:
|
||||||
|
- type: "bash_script"
|
||||||
|
path: "test.sh"
|
||||||
|
is_executable: true
|
||||||
|
- type: "file"
|
||||||
|
path: "visium"
|
||||||
|
- type: "file"
|
||||||
|
path: "GRCh38"
|
||||||
|
info: null
|
||||||
|
status: "enabled"
|
||||||
|
scope:
|
||||||
|
image: "public"
|
||||||
|
target: "public"
|
||||||
|
repositories:
|
||||||
|
- type: "github"
|
||||||
|
name: "openpipeline"
|
||||||
|
repo: "openpipelines-bio/openpipeline"
|
||||||
|
tag: "main_build"
|
||||||
|
keywords:
|
||||||
|
- "spaceranger"
|
||||||
|
links:
|
||||||
|
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
|
docker_registry: "ghcr.io"
|
||||||
|
documentation: "https://www.10xgenomics.com/support/software/space-ranger/latest/analysis/running-pipelines/space-ranger-count"
|
||||||
|
runners:
|
||||||
|
- type: "executable"
|
||||||
|
id: "executable"
|
||||||
|
docker_setup_strategy: "ifneedbepullelsecachedbuild"
|
||||||
|
- type: "nextflow"
|
||||||
|
id: "nextflow"
|
||||||
|
directives:
|
||||||
|
tag: "$id"
|
||||||
|
auto:
|
||||||
|
simplifyInput: true
|
||||||
|
simplifyOutput: false
|
||||||
|
transcript: false
|
||||||
|
publish: false
|
||||||
|
config:
|
||||||
|
labels:
|
||||||
|
mem1gb: "memory = 1000000000.B"
|
||||||
|
mem2gb: "memory = 2000000000.B"
|
||||||
|
mem5gb: "memory = 5000000000.B"
|
||||||
|
mem10gb: "memory = 10000000000.B"
|
||||||
|
mem20gb: "memory = 20000000000.B"
|
||||||
|
mem50gb: "memory = 50000000000.B"
|
||||||
|
mem100gb: "memory = 100000000000.B"
|
||||||
|
mem200gb: "memory = 200000000000.B"
|
||||||
|
mem500gb: "memory = 500000000000.B"
|
||||||
|
mem1tb: "memory = 1000000000000.B"
|
||||||
|
mem2tb: "memory = 2000000000000.B"
|
||||||
|
mem5tb: "memory = 5000000000000.B"
|
||||||
|
mem10tb: "memory = 10000000000000.B"
|
||||||
|
mem20tb: "memory = 20000000000000.B"
|
||||||
|
mem50tb: "memory = 50000000000000.B"
|
||||||
|
mem100tb: "memory = 100000000000000.B"
|
||||||
|
mem200tb: "memory = 200000000000000.B"
|
||||||
|
mem500tb: "memory = 500000000000000.B"
|
||||||
|
mem1gib: "memory = 1073741824.B"
|
||||||
|
mem2gib: "memory = 2147483648.B"
|
||||||
|
mem4gib: "memory = 4294967296.B"
|
||||||
|
mem8gib: "memory = 8589934592.B"
|
||||||
|
mem16gib: "memory = 17179869184.B"
|
||||||
|
mem32gib: "memory = 34359738368.B"
|
||||||
|
mem64gib: "memory = 68719476736.B"
|
||||||
|
mem128gib: "memory = 137438953472.B"
|
||||||
|
mem256gib: "memory = 274877906944.B"
|
||||||
|
mem512gib: "memory = 549755813888.B"
|
||||||
|
mem1tib: "memory = 1099511627776.B"
|
||||||
|
mem2tib: "memory = 2199023255552.B"
|
||||||
|
mem4tib: "memory = 4398046511104.B"
|
||||||
|
mem8tib: "memory = 8796093022208.B"
|
||||||
|
mem16tib: "memory = 17592186044416.B"
|
||||||
|
mem32tib: "memory = 35184372088832.B"
|
||||||
|
mem64tib: "memory = 70368744177664.B"
|
||||||
|
mem128tib: "memory = 140737488355328.B"
|
||||||
|
mem256tib: "memory = 281474976710656.B"
|
||||||
|
mem512tib: "memory = 562949953421312.B"
|
||||||
|
cpu1: "cpus = 1"
|
||||||
|
cpu2: "cpus = 2"
|
||||||
|
cpu5: "cpus = 5"
|
||||||
|
cpu10: "cpus = 10"
|
||||||
|
cpu20: "cpus = 20"
|
||||||
|
cpu50: "cpus = 50"
|
||||||
|
cpu100: "cpus = 100"
|
||||||
|
cpu200: "cpus = 200"
|
||||||
|
cpu500: "cpus = 500"
|
||||||
|
cpu1000: "cpus = 1000"
|
||||||
|
script:
|
||||||
|
- "includeConfig(\"nextflow_labels.config\")"
|
||||||
|
debug: false
|
||||||
|
container: "docker"
|
||||||
|
engines:
|
||||||
|
- type: "docker"
|
||||||
|
id: "docker"
|
||||||
|
image: "ghcr.io/data-intuitive/spaceranger:3.1"
|
||||||
|
target_registry: "images.viash-hub.com"
|
||||||
|
target_tag: "build_main"
|
||||||
|
namespace_separator: "/"
|
||||||
|
setup:
|
||||||
|
- type: "docker"
|
||||||
|
run:
|
||||||
|
- "DEBIAN_FRONTEND=noninteractive apt update && \\\napt upgrade -y && apt install\
|
||||||
|
\ -y procps && rm -rf /var/lib/apt/lists/*\n"
|
||||||
|
entrypoint: []
|
||||||
|
cmd: null
|
||||||
|
- type: "native"
|
||||||
|
id: "native"
|
||||||
|
build_info:
|
||||||
|
config: "src/mapping/spaceranger_count/config.vsh.yaml"
|
||||||
|
runner: "executable"
|
||||||
|
engine: "docker|native"
|
||||||
|
output: "target/executable/mapping/spaceranger_count"
|
||||||
|
executable: "target/executable/mapping/spaceranger_count/spaceranger_count"
|
||||||
|
viash_version: "0.9.3"
|
||||||
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
|
package_config:
|
||||||
|
name: "openpipeline_spatial"
|
||||||
|
version: "build_main"
|
||||||
|
info:
|
||||||
|
test_resources:
|
||||||
|
- type: "s3"
|
||||||
|
path: "s3://openpipelines-bio/openpipeline_spatial/resources_test"
|
||||||
|
dest: "resources_test"
|
||||||
|
repositories:
|
||||||
|
- type: "github"
|
||||||
|
name: "openpipeline"
|
||||||
|
repo: "openpipelines-bio/openpipeline"
|
||||||
|
tag: "main_build"
|
||||||
|
viash_version: "0.9.3"
|
||||||
|
source: "src"
|
||||||
|
target: "target"
|
||||||
|
config_mods:
|
||||||
|
- ".resources += {path: '/src/labels.config', dest: 'nextflow_labels.config'}\n\
|
||||||
|
.runners[.type == 'nextflow'].config.script := 'includeConfig(\"nextflow_labels.config\"\
|
||||||
|
)'"
|
||||||
|
- ".engines += { type: \"native\" }"
|
||||||
|
- ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'"
|
||||||
|
- ".engines[.type == 'docker'].target_tag := 'build_main'"
|
||||||
|
organization: "vsh"
|
||||||
|
links:
|
||||||
|
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
|
docker_registry: "ghcr.io"
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
process {
|
||||||
|
// Default resources for components that hardly do any processing
|
||||||
|
memory = { 2.GB * task.attempt }
|
||||||
|
cpus = 1
|
||||||
|
|
||||||
|
// Retry for exit codes that have something to do with memory issues
|
||||||
|
errorStrategy = { task.exitStatus in 137..140 ? 'retry' : 'terminate' }
|
||||||
|
maxRetries = 3
|
||||||
|
maxMemory = null
|
||||||
|
|
||||||
|
// CPU resources
|
||||||
|
withLabel: singlecpu { cpus = 1 }
|
||||||
|
withLabel: lowcpu { cpus = 4 }
|
||||||
|
withLabel: midcpu { cpus = 10 }
|
||||||
|
withLabel: highcpu { cpus = 20 }
|
||||||
|
|
||||||
|
// Memory resources
|
||||||
|
withLabel: lowmem { memory = { get_memory( 50.GB * task.attempt ) } }
|
||||||
|
withLabel: midmem { memory = { get_memory( 50.GB * task.attempt ) } }
|
||||||
|
withLabel: highmem { memory = { get_memory( 50.GB * task.attempt ) } }
|
||||||
|
withLabel: veryhighmem { memory = { get_memory( 75.GB * task.attempt ) } }
|
||||||
|
|
||||||
|
// Disk space
|
||||||
|
// Nextflow apparently can't handle empty directives, i.e.
|
||||||
|
// withLabel: lowdisk {}
|
||||||
|
// so for that reason we have to add a dummy directive
|
||||||
|
withLabel: lowdisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
withLabel: middisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
withLabel: highdisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
withLabel: veryhighdisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
// NOTE: The above labels intentionally do not have an effect by default.
|
||||||
|
// The user should set the disk space requirements by adding the following
|
||||||
|
// to the compute environment:
|
||||||
|
//
|
||||||
|
// withLabel: lowdisk { disk = { 20.GB * task.attempt } }
|
||||||
|
// withLabel: middisk { disk = { 100.GB * task.attempt } }
|
||||||
|
// withLabel: highdisk { disk = { 200.GB * task.attempt } }
|
||||||
|
// withLabel: veryhighdisk { disk = { 500.GB * task.attempt } }
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_memory(to_compare) {
|
||||||
|
if (!process.containsKey("maxMemory") || !process.maxMemory) {
|
||||||
|
return to_compare
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (process.containsKey("maxRetries") && process.maxRetries && task.attempt == (process.maxRetries as int)) {
|
||||||
|
return process.maxMemory
|
||||||
|
}
|
||||||
|
else if (to_compare.compareTo(process.maxMemory as nextflow.util.MemoryUnit) == 1) {
|
||||||
|
return max_memory as nextflow.util.MemoryUnit
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return to_compare
|
||||||
|
}
|
||||||
|
} catch (all) {
|
||||||
|
println "Error processing memory resources. Please check that process.maxMemory '${process.maxMemory}' and process.maxRetries '${process.maxRetries}' are valid!"
|
||||||
|
System.exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
1793
target/executable/mapping/spaceranger_count/spaceranger_count
Executable file
1793
target/executable/mapping/spaceranger_count/spaceranger_count
Executable file
File diff suppressed because it is too large
Load Diff
@@ -231,7 +231,7 @@ build_info:
|
|||||||
output: "target/nextflow/convert/from_cosmx_to_h5mu"
|
output: "target/nextflow/convert/from_cosmx_to_h5mu"
|
||||||
executable: "target/nextflow/convert/from_cosmx_to_h5mu/main.nf"
|
executable: "target/nextflow/convert/from_cosmx_to_h5mu/main.nf"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -3340,7 +3340,7 @@ meta = [
|
|||||||
"engine" : "docker|native",
|
"engine" : "docker|native",
|
||||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_cosmx_to_h5mu",
|
"output" : "/workdir/root/repo/target/nextflow/convert/from_cosmx_to_h5mu",
|
||||||
"viash_version" : "0.9.3",
|
"viash_version" : "0.9.3",
|
||||||
"git_commit" : "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16",
|
"git_commit" : "491efceaaf171f50aaa1d28f690c1e974cffc456",
|
||||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
},
|
},
|
||||||
"package_config" : {
|
"package_config" : {
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ build_info:
|
|||||||
output: "target/nextflow/convert/from_spatialdata_to_h5mu"
|
output: "target/nextflow/convert/from_spatialdata_to_h5mu"
|
||||||
executable: "target/nextflow/convert/from_spatialdata_to_h5mu/main.nf"
|
executable: "target/nextflow/convert/from_spatialdata_to_h5mu/main.nf"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -3332,7 +3332,7 @@ meta = [
|
|||||||
"engine" : "docker|native",
|
"engine" : "docker|native",
|
||||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_spatialdata_to_h5mu",
|
"output" : "/workdir/root/repo/target/nextflow/convert/from_spatialdata_to_h5mu",
|
||||||
"viash_version" : "0.9.3",
|
"viash_version" : "0.9.3",
|
||||||
"git_commit" : "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16",
|
"git_commit" : "491efceaaf171f50aaa1d28f690c1e974cffc456",
|
||||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
},
|
},
|
||||||
"package_config" : {
|
"package_config" : {
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ build_info:
|
|||||||
output: "target/nextflow/convert/from_xenium_to_spatialdata"
|
output: "target/nextflow/convert/from_xenium_to_spatialdata"
|
||||||
executable: "target/nextflow/convert/from_xenium_to_spatialdata/main.nf"
|
executable: "target/nextflow/convert/from_xenium_to_spatialdata/main.nf"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -3430,7 +3430,7 @@ meta = [
|
|||||||
"engine" : "docker|native",
|
"engine" : "docker|native",
|
||||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_xenium_to_spatialdata",
|
"output" : "/workdir/root/repo/target/nextflow/convert/from_xenium_to_spatialdata",
|
||||||
"viash_version" : "0.9.3",
|
"viash_version" : "0.9.3",
|
||||||
"git_commit" : "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16",
|
"git_commit" : "491efceaaf171f50aaa1d28f690c1e974cffc456",
|
||||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
},
|
},
|
||||||
"package_config" : {
|
"package_config" : {
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ build_info:
|
|||||||
output: "target/nextflow/filter/subset_cosmx"
|
output: "target/nextflow/filter/subset_cosmx"
|
||||||
executable: "target/nextflow/filter/subset_cosmx/main.nf"
|
executable: "target/nextflow/filter/subset_cosmx/main.nf"
|
||||||
viash_version: "0.9.3"
|
viash_version: "0.9.3"
|
||||||
git_commit: "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16"
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
package_config:
|
package_config:
|
||||||
name: "openpipeline_spatial"
|
name: "openpipeline_spatial"
|
||||||
|
|||||||
@@ -3322,7 +3322,7 @@ meta = [
|
|||||||
"engine" : "docker|native",
|
"engine" : "docker|native",
|
||||||
"output" : "/workdir/root/repo/target/nextflow/filter/subset_cosmx",
|
"output" : "/workdir/root/repo/target/nextflow/filter/subset_cosmx",
|
||||||
"viash_version" : "0.9.3",
|
"viash_version" : "0.9.3",
|
||||||
"git_commit" : "9f2a3e68cb0ae7fc97924d8872376ec7a58afe16",
|
"git_commit" : "491efceaaf171f50aaa1d28f690c1e974cffc456",
|
||||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
},
|
},
|
||||||
"package_config" : {
|
"package_config" : {
|
||||||
|
|||||||
457
target/nextflow/mapping/spaceranger_count/.config.vsh.yaml
Normal file
457
target/nextflow/mapping/spaceranger_count/.config.vsh.yaml
Normal file
@@ -0,0 +1,457 @@
|
|||||||
|
name: "spaceranger_count"
|
||||||
|
namespace: "mapping"
|
||||||
|
version: "build_main"
|
||||||
|
authors:
|
||||||
|
- name: "Jakub Majercik"
|
||||||
|
roles:
|
||||||
|
- "author"
|
||||||
|
info:
|
||||||
|
role: "Contributor"
|
||||||
|
links:
|
||||||
|
email: "jakub@data-intuitive.com"
|
||||||
|
github: "jakubmajercik"
|
||||||
|
linkedin: "jakubmajercik"
|
||||||
|
organizations:
|
||||||
|
- name: "Data Intuitive"
|
||||||
|
href: "https://www.data-intuitive.com"
|
||||||
|
role: "Bioinformatics Engineer"
|
||||||
|
argument_groups:
|
||||||
|
- name: "Inputs"
|
||||||
|
arguments:
|
||||||
|
- type: "file"
|
||||||
|
name: "--gex_reference"
|
||||||
|
description: "Path of folder containing 10x-compatible reference"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "/path/to/refdata-gex-GRCh38-2020-A"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--input"
|
||||||
|
description: "Path to a directory containing input FASTQ data. Individual FASTQ\
|
||||||
|
\ files should follow the naming convention of 10x Genomics:\n[Sample Name]_S[Sample\
|
||||||
|
\ Number]_L[Lane Number]_[Read Type]_001.fastq.gz\n\nWhere:\n[Sample Name] is\
|
||||||
|
\ the name assigned during sample preparation/sequencing\nS[Sample Number] is\
|
||||||
|
\ the sample index (usually S1, S2, etc.)\nL[Lane Number] identifies the sequencing\
|
||||||
|
\ lane (L001, L002, etc.)\n\n[Read Type] will be one of:\nR1 - Read 1 (contains\
|
||||||
|
\ the spatial barcode and UMI)\nR2 - Read 2 (contains the actual cDNA sequence)\n\
|
||||||
|
I1 - Index Read 1 (if applicable)\nI2 - Index Read 2 (if applicable)\n"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "/path/to/fastq_folder"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--probe_set"
|
||||||
|
description: "CSV file specifying the probe set used"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "Visium_Human_Transcriptome_Probe_Set_v2.0_GRCh38-2020-A.csv"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--cytaimage"
|
||||||
|
description: "Brightfield image generated by the CytAssist instrument. \nWhen\
|
||||||
|
\ using CytAssist workflow, either this or --image must be provided.\n"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "cyta_image.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--image"
|
||||||
|
description: "H&E or fluorescence microscope image in TIFF or JPG format. \nRequired\
|
||||||
|
\ for standard Visium workflow, optional when using --cytaimage for CytAssist\
|
||||||
|
\ workflow.\n"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "brightfield.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Outputs"
|
||||||
|
arguments:
|
||||||
|
- type: "file"
|
||||||
|
name: "--output"
|
||||||
|
description: "The folder to store the alignment results"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "/path/to/output"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: true
|
||||||
|
direction: "output"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Slide Information"
|
||||||
|
arguments:
|
||||||
|
- type: "string"
|
||||||
|
name: "--slide"
|
||||||
|
description: "Visium slide serial number (e.g., 'V10J25-015')"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "V10J25-015"
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "string"
|
||||||
|
name: "--area"
|
||||||
|
description: "Visium capture area identifier (e.g., 'A1')"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "A1"
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "string"
|
||||||
|
name: "--unknown_slide"
|
||||||
|
description: "Use this option if the slide serial number and area were entered\
|
||||||
|
\ incorrectly on the CytAssist \ninstrument and the correct values are unknown.\
|
||||||
|
\ Not compatible with --slide, --area, or \n--slide-file options\n"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
choices:
|
||||||
|
- "visium-1"
|
||||||
|
- "visium-2"
|
||||||
|
- "visium-2-large"
|
||||||
|
- "visium-hd"
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--slidefile"
|
||||||
|
description: "Slide design file for offline use"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "slide_design.gpr"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean_true"
|
||||||
|
name: "--override_id"
|
||||||
|
description: "Overrides the slide serial number and capture area provided in the\
|
||||||
|
\ Cytassist image metadata"
|
||||||
|
info: null
|
||||||
|
direction: "input"
|
||||||
|
- name: "Image Options"
|
||||||
|
arguments:
|
||||||
|
- type: "file"
|
||||||
|
name: "--darkimage"
|
||||||
|
description: "Multi-channel, dark-background fluorescence image"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "fluorescence.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "file"
|
||||||
|
name: "--colorizedimage"
|
||||||
|
description: "Color image representing pre-colored dark-background fluorescence\
|
||||||
|
\ images"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- "colored_fluorescence.tif"
|
||||||
|
must_exist: true
|
||||||
|
create_parent: true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--dapi_index"
|
||||||
|
description: "Index of DAPI channel (1-indexed) of fluorescence image"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- 1
|
||||||
|
required: false
|
||||||
|
min: 1
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "double"
|
||||||
|
name: "--image_scale"
|
||||||
|
description: "Microns per microscope image pixel"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- 0.65
|
||||||
|
required: false
|
||||||
|
min: 0.01
|
||||||
|
max: 10.0
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean"
|
||||||
|
name: "--reorient_images"
|
||||||
|
description: "Whether to rotate and mirror image to align fiducial pattern"
|
||||||
|
info: null
|
||||||
|
default:
|
||||||
|
- true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Processing Options"
|
||||||
|
arguments:
|
||||||
|
- type: "boolean"
|
||||||
|
name: "--create_bam"
|
||||||
|
description: "Enable or disable BAM file generation"
|
||||||
|
info: null
|
||||||
|
default:
|
||||||
|
- true
|
||||||
|
required: true
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean_true"
|
||||||
|
name: "--nosecondary"
|
||||||
|
description: "Disable secondary analysis (e.g., clustering)"
|
||||||
|
info: null
|
||||||
|
direction: "input"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--r1_length"
|
||||||
|
description: "Hard trim the input Read 1 to this length before analysis"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
min: 1
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--r2_length"
|
||||||
|
description: "Hard trim the input Read 2 to this length before analysis"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
min: 1
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "boolean"
|
||||||
|
name: "--filter_probes"
|
||||||
|
description: "Whether to filter the probe set using the \"included\" column"
|
||||||
|
info: null
|
||||||
|
default:
|
||||||
|
- true
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--custom_bin_size"
|
||||||
|
description: "Bin Visium HD data to specified size in microns (4-100, even values\
|
||||||
|
\ only) in addition to the standard binning size (2 µm, 8 µm, 16 µm)"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
min: 4
|
||||||
|
max: 100
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- name: "Input Selection"
|
||||||
|
arguments:
|
||||||
|
- type: "string"
|
||||||
|
name: "--project"
|
||||||
|
description: "Project folder name within mkfastq output"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "string"
|
||||||
|
name: "--sample"
|
||||||
|
description: "Prefix of FASTQ filenames to select"
|
||||||
|
info: null
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: false
|
||||||
|
multiple_sep: ";"
|
||||||
|
- type: "integer"
|
||||||
|
name: "--lanes"
|
||||||
|
description: "Only use FASTQs from selected lanes"
|
||||||
|
info: null
|
||||||
|
example:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
required: false
|
||||||
|
direction: "input"
|
||||||
|
multiple: true
|
||||||
|
multiple_sep: ";"
|
||||||
|
resources:
|
||||||
|
- type: "bash_script"
|
||||||
|
path: "script.sh"
|
||||||
|
is_executable: true
|
||||||
|
- type: "file"
|
||||||
|
path: "nextflow_labels.config"
|
||||||
|
dest: "nextflow_labels.config"
|
||||||
|
description: "Count gene expression and protein expression reads from a single capture\
|
||||||
|
\ area."
|
||||||
|
test_resources:
|
||||||
|
- type: "bash_script"
|
||||||
|
path: "test.sh"
|
||||||
|
is_executable: true
|
||||||
|
- type: "file"
|
||||||
|
path: "visium"
|
||||||
|
- type: "file"
|
||||||
|
path: "GRCh38"
|
||||||
|
info: null
|
||||||
|
status: "enabled"
|
||||||
|
scope:
|
||||||
|
image: "public"
|
||||||
|
target: "public"
|
||||||
|
repositories:
|
||||||
|
- type: "github"
|
||||||
|
name: "openpipeline"
|
||||||
|
repo: "openpipelines-bio/openpipeline"
|
||||||
|
tag: "main_build"
|
||||||
|
keywords:
|
||||||
|
- "spaceranger"
|
||||||
|
links:
|
||||||
|
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
|
docker_registry: "ghcr.io"
|
||||||
|
documentation: "https://www.10xgenomics.com/support/software/space-ranger/latest/analysis/running-pipelines/space-ranger-count"
|
||||||
|
runners:
|
||||||
|
- type: "executable"
|
||||||
|
id: "executable"
|
||||||
|
docker_setup_strategy: "ifneedbepullelsecachedbuild"
|
||||||
|
- type: "nextflow"
|
||||||
|
id: "nextflow"
|
||||||
|
directives:
|
||||||
|
tag: "$id"
|
||||||
|
auto:
|
||||||
|
simplifyInput: true
|
||||||
|
simplifyOutput: false
|
||||||
|
transcript: false
|
||||||
|
publish: false
|
||||||
|
config:
|
||||||
|
labels:
|
||||||
|
mem1gb: "memory = 1000000000.B"
|
||||||
|
mem2gb: "memory = 2000000000.B"
|
||||||
|
mem5gb: "memory = 5000000000.B"
|
||||||
|
mem10gb: "memory = 10000000000.B"
|
||||||
|
mem20gb: "memory = 20000000000.B"
|
||||||
|
mem50gb: "memory = 50000000000.B"
|
||||||
|
mem100gb: "memory = 100000000000.B"
|
||||||
|
mem200gb: "memory = 200000000000.B"
|
||||||
|
mem500gb: "memory = 500000000000.B"
|
||||||
|
mem1tb: "memory = 1000000000000.B"
|
||||||
|
mem2tb: "memory = 2000000000000.B"
|
||||||
|
mem5tb: "memory = 5000000000000.B"
|
||||||
|
mem10tb: "memory = 10000000000000.B"
|
||||||
|
mem20tb: "memory = 20000000000000.B"
|
||||||
|
mem50tb: "memory = 50000000000000.B"
|
||||||
|
mem100tb: "memory = 100000000000000.B"
|
||||||
|
mem200tb: "memory = 200000000000000.B"
|
||||||
|
mem500tb: "memory = 500000000000000.B"
|
||||||
|
mem1gib: "memory = 1073741824.B"
|
||||||
|
mem2gib: "memory = 2147483648.B"
|
||||||
|
mem4gib: "memory = 4294967296.B"
|
||||||
|
mem8gib: "memory = 8589934592.B"
|
||||||
|
mem16gib: "memory = 17179869184.B"
|
||||||
|
mem32gib: "memory = 34359738368.B"
|
||||||
|
mem64gib: "memory = 68719476736.B"
|
||||||
|
mem128gib: "memory = 137438953472.B"
|
||||||
|
mem256gib: "memory = 274877906944.B"
|
||||||
|
mem512gib: "memory = 549755813888.B"
|
||||||
|
mem1tib: "memory = 1099511627776.B"
|
||||||
|
mem2tib: "memory = 2199023255552.B"
|
||||||
|
mem4tib: "memory = 4398046511104.B"
|
||||||
|
mem8tib: "memory = 8796093022208.B"
|
||||||
|
mem16tib: "memory = 17592186044416.B"
|
||||||
|
mem32tib: "memory = 35184372088832.B"
|
||||||
|
mem64tib: "memory = 70368744177664.B"
|
||||||
|
mem128tib: "memory = 140737488355328.B"
|
||||||
|
mem256tib: "memory = 281474976710656.B"
|
||||||
|
mem512tib: "memory = 562949953421312.B"
|
||||||
|
cpu1: "cpus = 1"
|
||||||
|
cpu2: "cpus = 2"
|
||||||
|
cpu5: "cpus = 5"
|
||||||
|
cpu10: "cpus = 10"
|
||||||
|
cpu20: "cpus = 20"
|
||||||
|
cpu50: "cpus = 50"
|
||||||
|
cpu100: "cpus = 100"
|
||||||
|
cpu200: "cpus = 200"
|
||||||
|
cpu500: "cpus = 500"
|
||||||
|
cpu1000: "cpus = 1000"
|
||||||
|
script:
|
||||||
|
- "includeConfig(\"nextflow_labels.config\")"
|
||||||
|
debug: false
|
||||||
|
container: "docker"
|
||||||
|
engines:
|
||||||
|
- type: "docker"
|
||||||
|
id: "docker"
|
||||||
|
image: "ghcr.io/data-intuitive/spaceranger:3.1"
|
||||||
|
target_registry: "images.viash-hub.com"
|
||||||
|
target_tag: "build_main"
|
||||||
|
namespace_separator: "/"
|
||||||
|
setup:
|
||||||
|
- type: "docker"
|
||||||
|
run:
|
||||||
|
- "DEBIAN_FRONTEND=noninteractive apt update && \\\napt upgrade -y && apt install\
|
||||||
|
\ -y procps && rm -rf /var/lib/apt/lists/*\n"
|
||||||
|
entrypoint: []
|
||||||
|
cmd: null
|
||||||
|
- type: "native"
|
||||||
|
id: "native"
|
||||||
|
build_info:
|
||||||
|
config: "src/mapping/spaceranger_count/config.vsh.yaml"
|
||||||
|
runner: "nextflow"
|
||||||
|
engine: "docker|native"
|
||||||
|
output: "target/nextflow/mapping/spaceranger_count"
|
||||||
|
executable: "target/nextflow/mapping/spaceranger_count/main.nf"
|
||||||
|
viash_version: "0.9.3"
|
||||||
|
git_commit: "491efceaaf171f50aaa1d28f690c1e974cffc456"
|
||||||
|
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
|
package_config:
|
||||||
|
name: "openpipeline_spatial"
|
||||||
|
version: "build_main"
|
||||||
|
info:
|
||||||
|
test_resources:
|
||||||
|
- type: "s3"
|
||||||
|
path: "s3://openpipelines-bio/openpipeline_spatial/resources_test"
|
||||||
|
dest: "resources_test"
|
||||||
|
repositories:
|
||||||
|
- type: "github"
|
||||||
|
name: "openpipeline"
|
||||||
|
repo: "openpipelines-bio/openpipeline"
|
||||||
|
tag: "main_build"
|
||||||
|
viash_version: "0.9.3"
|
||||||
|
source: "src"
|
||||||
|
target: "target"
|
||||||
|
config_mods:
|
||||||
|
- ".resources += {path: '/src/labels.config', dest: 'nextflow_labels.config'}\n\
|
||||||
|
.runners[.type == 'nextflow'].config.script := 'includeConfig(\"nextflow_labels.config\"\
|
||||||
|
)'"
|
||||||
|
- ".engines += { type: \"native\" }"
|
||||||
|
- ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'"
|
||||||
|
- ".engines[.type == 'docker'].target_tag := 'build_main'"
|
||||||
|
organization: "vsh"
|
||||||
|
links:
|
||||||
|
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||||
|
docker_registry: "ghcr.io"
|
||||||
4199
target/nextflow/mapping/spaceranger_count/main.nf
Normal file
4199
target/nextflow/mapping/spaceranger_count/main.nf
Normal file
File diff suppressed because it is too large
Load Diff
126
target/nextflow/mapping/spaceranger_count/nextflow.config
Normal file
126
target/nextflow/mapping/spaceranger_count/nextflow.config
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
manifest {
|
||||||
|
name = 'mapping/spaceranger_count'
|
||||||
|
mainScript = 'main.nf'
|
||||||
|
nextflowVersion = '!>=20.12.1-edge'
|
||||||
|
version = 'build_main'
|
||||||
|
description = 'Count gene expression and protein expression reads from a single capture area.'
|
||||||
|
author = 'Jakub Majercik'
|
||||||
|
}
|
||||||
|
|
||||||
|
process.container = 'nextflow/bash:latest'
|
||||||
|
|
||||||
|
// detect tempdir
|
||||||
|
tempDir = java.nio.file.Paths.get(
|
||||||
|
System.getenv('NXF_TEMP') ?:
|
||||||
|
System.getenv('VIASH_TEMP') ?:
|
||||||
|
System.getenv('TEMPDIR') ?:
|
||||||
|
System.getenv('TMPDIR') ?:
|
||||||
|
'/tmp'
|
||||||
|
).toAbsolutePath()
|
||||||
|
|
||||||
|
profiles {
|
||||||
|
no_publish {
|
||||||
|
process {
|
||||||
|
withName: '.*' {
|
||||||
|
publishDir = [
|
||||||
|
enabled: false
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mount_temp {
|
||||||
|
docker.temp = tempDir
|
||||||
|
podman.temp = tempDir
|
||||||
|
charliecloud.temp = tempDir
|
||||||
|
}
|
||||||
|
docker {
|
||||||
|
docker.enabled = true
|
||||||
|
// docker.userEmulation = true
|
||||||
|
singularity.enabled = false
|
||||||
|
podman.enabled = false
|
||||||
|
shifter.enabled = false
|
||||||
|
charliecloud.enabled = false
|
||||||
|
}
|
||||||
|
singularity {
|
||||||
|
singularity.enabled = true
|
||||||
|
singularity.autoMounts = true
|
||||||
|
docker.enabled = false
|
||||||
|
podman.enabled = false
|
||||||
|
shifter.enabled = false
|
||||||
|
charliecloud.enabled = false
|
||||||
|
}
|
||||||
|
podman {
|
||||||
|
podman.enabled = true
|
||||||
|
docker.enabled = false
|
||||||
|
singularity.enabled = false
|
||||||
|
shifter.enabled = false
|
||||||
|
charliecloud.enabled = false
|
||||||
|
}
|
||||||
|
shifter {
|
||||||
|
shifter.enabled = true
|
||||||
|
docker.enabled = false
|
||||||
|
singularity.enabled = false
|
||||||
|
podman.enabled = false
|
||||||
|
charliecloud.enabled = false
|
||||||
|
}
|
||||||
|
charliecloud {
|
||||||
|
charliecloud.enabled = true
|
||||||
|
docker.enabled = false
|
||||||
|
singularity.enabled = false
|
||||||
|
podman.enabled = false
|
||||||
|
shifter.enabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
process{
|
||||||
|
withLabel: mem1gb { memory = 1000000000.B }
|
||||||
|
withLabel: mem2gb { memory = 2000000000.B }
|
||||||
|
withLabel: mem5gb { memory = 5000000000.B }
|
||||||
|
withLabel: mem10gb { memory = 10000000000.B }
|
||||||
|
withLabel: mem20gb { memory = 20000000000.B }
|
||||||
|
withLabel: mem50gb { memory = 50000000000.B }
|
||||||
|
withLabel: mem100gb { memory = 100000000000.B }
|
||||||
|
withLabel: mem200gb { memory = 200000000000.B }
|
||||||
|
withLabel: mem500gb { memory = 500000000000.B }
|
||||||
|
withLabel: mem1tb { memory = 1000000000000.B }
|
||||||
|
withLabel: mem2tb { memory = 2000000000000.B }
|
||||||
|
withLabel: mem5tb { memory = 5000000000000.B }
|
||||||
|
withLabel: mem10tb { memory = 10000000000000.B }
|
||||||
|
withLabel: mem20tb { memory = 20000000000000.B }
|
||||||
|
withLabel: mem50tb { memory = 50000000000000.B }
|
||||||
|
withLabel: mem100tb { memory = 100000000000000.B }
|
||||||
|
withLabel: mem200tb { memory = 200000000000000.B }
|
||||||
|
withLabel: mem500tb { memory = 500000000000000.B }
|
||||||
|
withLabel: mem1gib { memory = 1073741824.B }
|
||||||
|
withLabel: mem2gib { memory = 2147483648.B }
|
||||||
|
withLabel: mem4gib { memory = 4294967296.B }
|
||||||
|
withLabel: mem8gib { memory = 8589934592.B }
|
||||||
|
withLabel: mem16gib { memory = 17179869184.B }
|
||||||
|
withLabel: mem32gib { memory = 34359738368.B }
|
||||||
|
withLabel: mem64gib { memory = 68719476736.B }
|
||||||
|
withLabel: mem128gib { memory = 137438953472.B }
|
||||||
|
withLabel: mem256gib { memory = 274877906944.B }
|
||||||
|
withLabel: mem512gib { memory = 549755813888.B }
|
||||||
|
withLabel: mem1tib { memory = 1099511627776.B }
|
||||||
|
withLabel: mem2tib { memory = 2199023255552.B }
|
||||||
|
withLabel: mem4tib { memory = 4398046511104.B }
|
||||||
|
withLabel: mem8tib { memory = 8796093022208.B }
|
||||||
|
withLabel: mem16tib { memory = 17592186044416.B }
|
||||||
|
withLabel: mem32tib { memory = 35184372088832.B }
|
||||||
|
withLabel: mem64tib { memory = 70368744177664.B }
|
||||||
|
withLabel: mem128tib { memory = 140737488355328.B }
|
||||||
|
withLabel: mem256tib { memory = 281474976710656.B }
|
||||||
|
withLabel: mem512tib { memory = 562949953421312.B }
|
||||||
|
withLabel: cpu1 { cpus = 1 }
|
||||||
|
withLabel: cpu2 { cpus = 2 }
|
||||||
|
withLabel: cpu5 { cpus = 5 }
|
||||||
|
withLabel: cpu10 { cpus = 10 }
|
||||||
|
withLabel: cpu20 { cpus = 20 }
|
||||||
|
withLabel: cpu50 { cpus = 50 }
|
||||||
|
withLabel: cpu100 { cpus = 100 }
|
||||||
|
withLabel: cpu200 { cpus = 200 }
|
||||||
|
withLabel: cpu500 { cpus = 500 }
|
||||||
|
withLabel: cpu1000 { cpus = 1000 }
|
||||||
|
}
|
||||||
|
|
||||||
|
includeConfig("nextflow_labels.config")
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
process {
|
||||||
|
// Default resources for components that hardly do any processing
|
||||||
|
memory = { 2.GB * task.attempt }
|
||||||
|
cpus = 1
|
||||||
|
|
||||||
|
// Retry for exit codes that have something to do with memory issues
|
||||||
|
errorStrategy = { task.exitStatus in 137..140 ? 'retry' : 'terminate' }
|
||||||
|
maxRetries = 3
|
||||||
|
maxMemory = null
|
||||||
|
|
||||||
|
// CPU resources
|
||||||
|
withLabel: singlecpu { cpus = 1 }
|
||||||
|
withLabel: lowcpu { cpus = 4 }
|
||||||
|
withLabel: midcpu { cpus = 10 }
|
||||||
|
withLabel: highcpu { cpus = 20 }
|
||||||
|
|
||||||
|
// Memory resources
|
||||||
|
withLabel: lowmem { memory = { get_memory( 50.GB * task.attempt ) } }
|
||||||
|
withLabel: midmem { memory = { get_memory( 50.GB * task.attempt ) } }
|
||||||
|
withLabel: highmem { memory = { get_memory( 50.GB * task.attempt ) } }
|
||||||
|
withLabel: veryhighmem { memory = { get_memory( 75.GB * task.attempt ) } }
|
||||||
|
|
||||||
|
// Disk space
|
||||||
|
// Nextflow apparently can't handle empty directives, i.e.
|
||||||
|
// withLabel: lowdisk {}
|
||||||
|
// so for that reason we have to add a dummy directive
|
||||||
|
withLabel: lowdisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
withLabel: middisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
withLabel: highdisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
withLabel: veryhighdisk {
|
||||||
|
dummyDirective = "dummyValue"
|
||||||
|
}
|
||||||
|
// NOTE: The above labels intentionally do not have an effect by default.
|
||||||
|
// The user should set the disk space requirements by adding the following
|
||||||
|
// to the compute environment:
|
||||||
|
//
|
||||||
|
// withLabel: lowdisk { disk = { 20.GB * task.attempt } }
|
||||||
|
// withLabel: middisk { disk = { 100.GB * task.attempt } }
|
||||||
|
// withLabel: highdisk { disk = { 200.GB * task.attempt } }
|
||||||
|
// withLabel: veryhighdisk { disk = { 500.GB * task.attempt } }
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_memory(to_compare) {
|
||||||
|
if (!process.containsKey("maxMemory") || !process.maxMemory) {
|
||||||
|
return to_compare
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (process.containsKey("maxRetries") && process.maxRetries && task.attempt == (process.maxRetries as int)) {
|
||||||
|
return process.maxMemory
|
||||||
|
}
|
||||||
|
else if (to_compare.compareTo(process.maxMemory as nextflow.util.MemoryUnit) == 1) {
|
||||||
|
return max_memory as nextflow.util.MemoryUnit
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return to_compare
|
||||||
|
}
|
||||||
|
} catch (all) {
|
||||||
|
println "Error processing memory resources. Please check that process.maxMemory '${process.maxMemory}' and process.maxRetries '${process.maxRetries}' are valid!"
|
||||||
|
System.exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
237
target/nextflow/mapping/spaceranger_count/nextflow_schema.json
Normal file
237
target/nextflow/mapping/spaceranger_count/nextflow_schema.json
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"title": "spaceranger_count",
|
||||||
|
"description": "Count gene expression and protein expression reads from a single capture area.",
|
||||||
|
"type": "object",
|
||||||
|
"$defs": {
|
||||||
|
"inputs": {
|
||||||
|
"title": "Inputs",
|
||||||
|
"type": "object",
|
||||||
|
"description": "No description",
|
||||||
|
"properties": {
|
||||||
|
"gex_reference": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"exists": true,
|
||||||
|
"description": "Path of folder containing 10x-compatible reference",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, required, direction: `input`, example: `\"/path/to/refdata-gex-GRCh38-2020-A\"`. "
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"exists": true,
|
||||||
|
"description": "Path to a directory containing input FASTQ data",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, required, direction: `input`, example: `\"/path/to/fastq_folder\"`. "
|
||||||
|
},
|
||||||
|
"probe_set": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"exists": true,
|
||||||
|
"description": "CSV file specifying the probe set used",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, required, direction: `input`, example: `\"Visium_Human_Transcriptome_Probe_Set_v2.0_GRCh38-2020-A.csv\"`. "
|
||||||
|
},
|
||||||
|
"cytaimage": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"description": "Brightfield image generated by the CytAssist instrument",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, direction: `input`, example: `\"cyta_image.tif\"`. "
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"description": "H&E or fluorescence microscope image in TIFF or JPG format",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, direction: `input`, example: `\"brightfield.tif\"`. "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"outputs": {
|
||||||
|
"title": "Outputs",
|
||||||
|
"type": "object",
|
||||||
|
"description": "No description",
|
||||||
|
"properties": {
|
||||||
|
"output": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"description": "The folder to store the alignment results",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, required, default: `\"$id.$key.output\"`, direction: `output`, example: `\"/path/to/output\"`. ",
|
||||||
|
"default": "$id.$key.output"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"slide information": {
|
||||||
|
"title": "Slide Information",
|
||||||
|
"type": "object",
|
||||||
|
"description": "No description",
|
||||||
|
"properties": {
|
||||||
|
"slide": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Visium slide serial number (e.g., 'V10J25-015')",
|
||||||
|
"help_text": "Type: `string`, multiple: `False`, example: `\"V10J25-015\"`. "
|
||||||
|
},
|
||||||
|
"area": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Visium capture area identifier (e.g., 'A1')",
|
||||||
|
"help_text": "Type: `string`, multiple: `False`, example: `\"A1\"`. "
|
||||||
|
},
|
||||||
|
"unknown_slide": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Use this option if the slide serial number and area were entered incorrectly on the CytAssist \ninstrument and the correct values are unknown",
|
||||||
|
"help_text": "Type: `string`, multiple: `False`, choices: ``visium-1`, `visium-2`, `visium-2-large`, `visium-hd``. ",
|
||||||
|
"enum": [
|
||||||
|
"visium-1",
|
||||||
|
"visium-2",
|
||||||
|
"visium-2-large",
|
||||||
|
"visium-hd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"slidefile": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"description": "Slide design file for offline use",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, direction: `input`, example: `\"slide_design.gpr\"`. "
|
||||||
|
},
|
||||||
|
"override_id": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Overrides the slide serial number and capture area provided in the Cytassist image metadata",
|
||||||
|
"help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
|
||||||
|
"default": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"image options": {
|
||||||
|
"title": "Image Options",
|
||||||
|
"type": "object",
|
||||||
|
"description": "No description",
|
||||||
|
"properties": {
|
||||||
|
"darkimage": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"description": "Multi-channel, dark-background fluorescence image",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, direction: `input`, example: `\"fluorescence.tif\"`. "
|
||||||
|
},
|
||||||
|
"colorizedimage": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "path",
|
||||||
|
"description": "Color image representing pre-colored dark-background fluorescence images",
|
||||||
|
"help_text": "Type: `file`, multiple: `False`, direction: `input`, example: `\"colored_fluorescence.tif\"`. "
|
||||||
|
},
|
||||||
|
"dapi_index": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Index of DAPI channel (1-indexed) of fluorescence image",
|
||||||
|
"help_text": "Type: `integer`, multiple: `False`, example: `1`. "
|
||||||
|
},
|
||||||
|
"image_scale": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "Microns per microscope image pixel",
|
||||||
|
"help_text": "Type: `double`, multiple: `False`, example: `0.65`. "
|
||||||
|
},
|
||||||
|
"reorient_images": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Whether to rotate and mirror image to align fiducial pattern",
|
||||||
|
"help_text": "Type: `boolean`, multiple: `False`, default: `true`. ",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"processing options": {
|
||||||
|
"title": "Processing Options",
|
||||||
|
"type": "object",
|
||||||
|
"description": "No description",
|
||||||
|
"properties": {
|
||||||
|
"create_bam": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Enable or disable BAM file generation",
|
||||||
|
"help_text": "Type: `boolean`, multiple: `False`, required, default: `true`. ",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"nosecondary": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Disable secondary analysis (e.g., clustering)",
|
||||||
|
"help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"r1_length": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Hard trim the input Read 1 to this length before analysis",
|
||||||
|
"help_text": "Type: `integer`, multiple: `False`. "
|
||||||
|
},
|
||||||
|
"r2_length": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Hard trim the input Read 2 to this length before analysis",
|
||||||
|
"help_text": "Type: `integer`, multiple: `False`. "
|
||||||
|
},
|
||||||
|
"filter_probes": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Whether to filter the probe set using the \"included\" column",
|
||||||
|
"help_text": "Type: `boolean`, multiple: `False`, default: `true`. ",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"custom_bin_size": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Bin Visium HD data to specified size in microns (4-100, even values only) in addition to the standard binning size (2 µm, 8 µm, 16 µm)",
|
||||||
|
"help_text": "Type: `integer`, multiple: `False`. "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"input selection": {
|
||||||
|
"title": "Input Selection",
|
||||||
|
"type": "object",
|
||||||
|
"description": "No description",
|
||||||
|
"properties": {
|
||||||
|
"project": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Project folder name within mkfastq output",
|
||||||
|
"help_text": "Type: `string`, multiple: `False`. "
|
||||||
|
},
|
||||||
|
"sample": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Prefix of FASTQ filenames to select",
|
||||||
|
"help_text": "Type: `string`, multiple: `False`. "
|
||||||
|
},
|
||||||
|
"lanes": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"description": "Only use FASTQs from selected lanes",
|
||||||
|
"help_text": "Type: `integer`, multiple: `True`, example: `[1;2;3]`. "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nextflow input-output arguments": {
|
||||||
|
"title": "Nextflow input-output arguments",
|
||||||
|
"type": "object",
|
||||||
|
"description": "Input/output parameters for Nextflow itself. Please note that both publishDir and publish_dir are supported but at least one has to be configured.",
|
||||||
|
"properties": {
|
||||||
|
"publish_dir": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Path to an output directory.",
|
||||||
|
"help_text": "Type: `string`, multiple: `False`, required, example: `\"output/\"`. "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/inputs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/outputs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/slide information"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/image options"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/processing options"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/input selection"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/nextflow input-output arguments"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user