Build branch openpipeline_spatial/niche-compass with version niche-compass to openpipeline_spatial on branch niche-compass (ad19aba)
Build pipeline: openpipelines-bio.openpipeline-spatial.niche-compass-d9hs2
Source commit: ad19aba349
Source message: update split h5mu
This commit is contained in:
73
src/dataflow/split_h5mu/config.vsh.yaml
Normal file
73
src/dataflow/split_h5mu/config.vsh.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
name: split_h5mu
|
||||
namespace: "dataflow"
|
||||
scope: "public"
|
||||
description: |
|
||||
Split the samples of a single modality from a .h5mu (multimodal) sample into seperate .h5mu files based on the values of an .obs column of this modality.
|
||||
authors:
|
||||
- __merge__: /src/authors/dorien_roosen.yaml
|
||||
roles: [ author, maintainer ]
|
||||
argument_groups:
|
||||
- name: Input & specifications
|
||||
arguments:
|
||||
- name: "--input"
|
||||
type: file
|
||||
description: Path to a single .h5mu file.
|
||||
required: true
|
||||
- name: "--modality"
|
||||
description: |
|
||||
Which modality from the input MuData file to process.
|
||||
type: string
|
||||
default: "rna"
|
||||
required: false
|
||||
- name: "--obs_feature"
|
||||
type: string
|
||||
required: true
|
||||
description: The .obs column to split the mudata on.
|
||||
example: "celltype"
|
||||
- name: "--drop_obs_nan"
|
||||
type: boolean_true
|
||||
description: Whether to drop all .obs columns that contain only nan values after splitting.
|
||||
- name: "--ensure_unique_filenames"
|
||||
type: boolean_true
|
||||
description: Append number suffixes to ensure unique filenames after sanitizing obs feature values.
|
||||
|
||||
- name: Outputs
|
||||
arguments:
|
||||
- name: "--output"
|
||||
type: file
|
||||
required: true
|
||||
direction: output
|
||||
example: "/path/to/output"
|
||||
description: Output directory containing multiple h5mu files.
|
||||
- name: "--output_files"
|
||||
type: file
|
||||
required: true
|
||||
direction: output
|
||||
example: sample_files.csv
|
||||
description: A csv containing the base filename and obs feature by which it was split.
|
||||
__merge__: [., /src/base/h5_compression_argument.yaml]
|
||||
|
||||
|
||||
resources:
|
||||
- type: python_script
|
||||
path: script.py
|
||||
- path: /src/utils/setup_logger.py
|
||||
test_resources:
|
||||
- type: python_script
|
||||
path: test.py
|
||||
|
||||
engines:
|
||||
- type: docker
|
||||
image: python:3.12-slim
|
||||
setup:
|
||||
- type: apt
|
||||
packages:
|
||||
- procps
|
||||
- type: python
|
||||
__merge__: /src/base/requirements/anndata_mudata.yaml
|
||||
__merge__: [ /src/base/requirements/python_test_setup.yaml, .]
|
||||
runners:
|
||||
- type: executable
|
||||
- type: nextflow
|
||||
directives:
|
||||
label: [ lowcpu, highmem, highdisk]
|
||||
119
src/dataflow/split_h5mu/script.py
Normal file
119
src/dataflow/split_h5mu/script.py
Normal file
@@ -0,0 +1,119 @@
|
||||
import sys
|
||||
import mudata as mu
|
||||
import pandas as pd
|
||||
import re
|
||||
import gc
|
||||
from pathlib import Path
|
||||
from collections import defaultdict
|
||||
|
||||
### VIASH START
|
||||
par = {
|
||||
"input": "cart_atomx_process_samples.h5mu",
|
||||
"modality": "rna",
|
||||
"obs_feature": "sample_id",
|
||||
"output": "reference_download/sample_split",
|
||||
"drop_obs_nan": "true",
|
||||
"output_compression": None,
|
||||
"output_files": "reference_download/sample_files.csv",
|
||||
"ensure_unique_filenames": True,
|
||||
}
|
||||
meta = {
|
||||
"resources_dir": "src/utils",
|
||||
}
|
||||
# import anndata as ad
|
||||
|
||||
# df = pd.DataFrame(
|
||||
# [[1, 2, 3], [4, 5, 6]], index=["obs1", "obs2"], columns=["var1", "var2", "var3"]
|
||||
# )
|
||||
# var3 = pd.DataFrame(["d", "e", "g"], index=df.columns, columns=["Feat"])
|
||||
# obs3 = pd.DataFrame(["C C", "C_C"], index=df.index, columns=["Obs"])
|
||||
# ad3 = ad.AnnData(df, obs=obs3, var=var3)
|
||||
# mdata = mu.MuData({"rna": ad3})
|
||||
# mdata.write_h5mu("test_san.h5mu")
|
||||
# par["input"] = "test_san.h5mu"
|
||||
# par["obs_feature"] = "Obs"
|
||||
### VIASH END
|
||||
|
||||
sys.path.append(meta["resources_dir"])
|
||||
from setup_logger import setup_logger
|
||||
|
||||
logger = setup_logger()
|
||||
|
||||
|
||||
def main():
|
||||
logger.info(f"Reading {par['input']}")
|
||||
input_file = Path(par["input"].strip())
|
||||
|
||||
mdata = mu.read_h5mu(input_file)
|
||||
adata = mdata.mod[par["modality"]]
|
||||
|
||||
logger.info(f"Reading unique features from {par['obs_feature']}")
|
||||
obs_features = adata.obs[par["obs_feature"]].unique().tolist()
|
||||
|
||||
# sanitize --obs_feature values
|
||||
obs_features_s = [re.sub(r"[-\s]", "_", str(s).strip()) for s in obs_features]
|
||||
obs_features_s = [re.sub(r"[^A-Za-z0-9_]", "", s) for s in obs_features_s]
|
||||
|
||||
# ensure that names are unique, if not raise or append number as suffix
|
||||
if not len(obs_features_s) == len(set(obs_features_s)):
|
||||
if not par["ensure_unique_filenames"]:
|
||||
raise ValueError(
|
||||
f"File names are not unique after sanitizing the --obs_feature {par['obs_feature']} values"
|
||||
)
|
||||
|
||||
logger.info("Ensuring unique names for par['obs_feature']")
|
||||
counts = defaultdict(lambda: -1)
|
||||
for i, feature in enumerate(obs_features_s):
|
||||
counts[feature] += 1
|
||||
if (curr_counts := counts[feature]) > 0:
|
||||
obs_features_s[i] += f"_{curr_counts}"
|
||||
|
||||
# generate output dir
|
||||
output_dir = Path(par["output"])
|
||||
if not output_dir.is_dir():
|
||||
output_dir.mkdir(parents=True)
|
||||
|
||||
# split modality of mdata file base on obs_feature
|
||||
logger.info(f"Splitting file based on {par['obs_feature']} values {obs_features}")
|
||||
obs_files = []
|
||||
|
||||
for obs_name, file_name in zip(obs_features, obs_features_s):
|
||||
logger.info(
|
||||
f"Filtering modality '{par['modality']}' observations by .obs['{par['obs_feature']}'] == {obs_name}"
|
||||
)
|
||||
mdata_obs = mdata.copy()
|
||||
adata_full = mdata_obs.mod[par["modality"]]
|
||||
|
||||
# split the samples
|
||||
mask = adata_full.obs[par["obs_feature"]] == obs_name
|
||||
adata_obs = adata_full[mask].copy()
|
||||
|
||||
# Dropping columns that only have nan values after splitting
|
||||
if par["drop_obs_nan"]:
|
||||
logger.info("Dropping all .obs columns with NaN values")
|
||||
adata_obs.obs = adata_obs.obs.dropna(axis=1, how="all")
|
||||
|
||||
mdata_obs.mod[par["modality"]] = adata_obs
|
||||
|
||||
mdata_obs_name = f"{input_file.stem}_{file_name}.h5mu"
|
||||
out_path = output_dir / mdata_obs_name
|
||||
|
||||
# replace mdata file with modality adata contianing split samples
|
||||
logger.info(
|
||||
f"Writing h5mu filtered for {par['obs_feature']} {obs_name} to file {out_path}"
|
||||
)
|
||||
|
||||
mdata_obs.write_h5mu(out_path, compression=par["output_compression"])
|
||||
|
||||
# avoid keeping files in memory
|
||||
obs_files.append(mdata_obs_name)
|
||||
del mdata_obs, adata_obs
|
||||
gc.collect()
|
||||
|
||||
logger.info(f"Writing output_files CSV file to {par['output_files']}")
|
||||
df = pd.DataFrame({"name": obs_features_s, "filename": obs_files})
|
||||
df.to_csv(par["output_files"], index=False)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
288
src/dataflow/split_h5mu/test.py
Normal file
288
src/dataflow/split_h5mu/test.py
Normal file
@@ -0,0 +1,288 @@
|
||||
import sys
|
||||
from textwrap import dedent
|
||||
import pytest
|
||||
import mudata as mu
|
||||
import anndata as ad
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import subprocess
|
||||
import re
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def input_modality_1():
|
||||
df = pd.DataFrame(
|
||||
[[1, 2, 3], [4, 5, 6]], index=["obs1", "obs2"], columns=["var1", "var2", "var3"]
|
||||
)
|
||||
obs = pd.DataFrame({"Obs": ["A", "B"], "Obs_nan": [np.nan, np.nan]}, index=df.index)
|
||||
var = pd.DataFrame([["a"], ["b"], ["c"]], index=df.columns, columns=["Feat"])
|
||||
ad1 = ad.AnnData(df, obs=obs, var=var)
|
||||
return ad1
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def input_modality_2():
|
||||
df = pd.DataFrame(
|
||||
[[1, 2, 3], [4, 5, 6]], index=["obs1", "obs2"], columns=["var1", "var2", "var3"]
|
||||
)
|
||||
var2 = pd.DataFrame(["d", "e", "g"], index=df.columns, columns=["Feat"])
|
||||
obs2 = pd.DataFrame(["C", "D"], index=df.index, columns=["Obs"])
|
||||
ad2 = ad.AnnData(df, obs=obs2, var=var2)
|
||||
return ad2
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def input_modality_3():
|
||||
df = pd.DataFrame(
|
||||
[[1, 2, 3], [4, 5, 6]], index=["obs1", "obs2"], columns=["var1", "var2", "var3"]
|
||||
)
|
||||
var3 = pd.DataFrame(["d", "e", "g"], index=df.columns, columns=["Feat"])
|
||||
obs3 = pd.DataFrame(["C C", "C_C"], index=df.index, columns=["Obs"])
|
||||
ad3 = ad.AnnData(df, obs=obs3, var=var3)
|
||||
return ad3
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def input_h5mu(input_modality_1, input_modality_2):
|
||||
tmp_mudata = mu.MuData({"mod1": input_modality_1, "mod2": input_modality_2})
|
||||
return tmp_mudata
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def input_h5mu_path(write_mudata_to_file, input_h5mu):
|
||||
return write_mudata_to_file(input_h5mu)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def input_h5mu_non_unique_filenames(input_modality_3):
|
||||
tmp_mudata = mu.MuData({"mod3": input_modality_3})
|
||||
return tmp_mudata
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def input_h5mu_path_non_unique_filenames(
|
||||
write_mudata_to_file, input_h5mu_non_unique_filenames
|
||||
):
|
||||
return write_mudata_to_file(input_h5mu_non_unique_filenames)
|
||||
|
||||
|
||||
def test_sample_split(run_component, random_path, input_h5mu, input_h5mu_path):
|
||||
output_dir = random_path()
|
||||
output_files = random_path(extension="csv")
|
||||
args = [
|
||||
"--input",
|
||||
input_h5mu_path,
|
||||
"--output",
|
||||
str(output_dir),
|
||||
"--modality",
|
||||
"mod1",
|
||||
"--obs_feature",
|
||||
"Obs",
|
||||
"--output_files",
|
||||
str(output_files),
|
||||
]
|
||||
|
||||
run_component(args)
|
||||
assert output_files.is_file()
|
||||
assert output_dir.is_dir()
|
||||
|
||||
# check output dir and file names
|
||||
dir_content = [
|
||||
h5mu_file
|
||||
for h5mu_file in output_dir.iterdir()
|
||||
if h5mu_file.suffix == ".h5mu" and h5mu_file != input_h5mu_path
|
||||
]
|
||||
s1_file = output_dir / f"{input_h5mu_path.stem}_A.h5mu"
|
||||
s2_file = output_dir / f"{input_h5mu_path.stem}_B.h5mu"
|
||||
assert set(dir_content) == set([s1_file, s2_file])
|
||||
|
||||
# check that number of modalities, variables and observations
|
||||
s1 = mu.read_h5mu(s1_file)
|
||||
s2 = mu.read_h5mu(s2_file)
|
||||
assert s1.n_mod == 2
|
||||
assert s2.n_mod == 2
|
||||
|
||||
assert s1.n_obs == input_h5mu.n_obs, (
|
||||
"number of observations of split file does not match input file"
|
||||
)
|
||||
assert s2.n_obs == input_h5mu.n_obs, (
|
||||
"number of observations of split file does not match input file"
|
||||
)
|
||||
|
||||
assert s1.mod["mod1"].n_obs == 1, (
|
||||
"number of observations of split file s1 modality mod1 should equal 1"
|
||||
)
|
||||
assert s1.mod["mod2"].n_obs == input_h5mu.n_obs, (
|
||||
"number of observations of split file s1 modality mod2 should equal input file"
|
||||
)
|
||||
|
||||
assert len(s1.mod["mod1"].obs.keys()) == 2, (
|
||||
"number of observation keys split file s1 modality mod1 should equal 2"
|
||||
)
|
||||
assert len(s1.mod["mod2"].obs.keys()) == 1, (
|
||||
"number of observation keys split file s1 modality mod2 should equal 1"
|
||||
)
|
||||
|
||||
assert s2.mod["mod1"].n_obs == 1, (
|
||||
"number of observations of split file s2 modality mod1 should equal 1"
|
||||
)
|
||||
assert s2.mod["mod2"].n_obs == input_h5mu.n_obs, (
|
||||
"number of observations of split file s2 modality mod2 should equal input file"
|
||||
)
|
||||
|
||||
assert s1.n_vars == input_h5mu.n_vars, (
|
||||
"number of variables of split file s1 should equal input file"
|
||||
)
|
||||
assert s2.n_vars == input_h5mu.n_vars, (
|
||||
"number of variables of split file s1 should equal input file"
|
||||
)
|
||||
|
||||
assert s1.mod["mod1"].n_vars == input_h5mu.mod["mod1"].n_vars, (
|
||||
"number of variables of split file s1 modalitty mod1 should equal input file"
|
||||
)
|
||||
assert s1.mod["mod2"].n_vars == input_h5mu.mod["mod1"].n_vars, (
|
||||
"number of variables of split file s1 modalitty mod2 should equal input file"
|
||||
)
|
||||
|
||||
assert s2.mod["mod1"].n_vars == input_h5mu.mod["mod1"].n_vars, (
|
||||
"number of variables of split file s2 modalitty mod1 should equal input file"
|
||||
)
|
||||
assert s2.mod["mod2"].n_vars == input_h5mu.mod["mod1"].n_vars, (
|
||||
"number of variables of split file s2 modalitty mod2 should equal input file"
|
||||
)
|
||||
|
||||
# check correct sample splitting
|
||||
assert np.all(s1.mod["mod1"].obs["Obs"] == "A"), (
|
||||
"observation of .obs Obs in s1 should equal A"
|
||||
)
|
||||
assert np.all(s2.mod["mod1"].obs["Obs"] == "B"), (
|
||||
"observation of .obs Obs in s2 should equal B"
|
||||
)
|
||||
|
||||
# Check contents of csv file
|
||||
expected_csv_output = dedent(
|
||||
f"""\
|
||||
name,filename
|
||||
A,{s1_file.name}
|
||||
B,{s2_file.name}
|
||||
"""
|
||||
)
|
||||
with open(output_files, "r") as open_csv_file:
|
||||
result = open_csv_file.read()
|
||||
assert result == expected_csv_output
|
||||
|
||||
|
||||
def test_sample_split_dropna(run_component, random_path, input_h5mu, input_h5mu_path):
|
||||
output_dir = random_path()
|
||||
output_files = random_path(extension="csv")
|
||||
args = [
|
||||
"--input",
|
||||
input_h5mu_path,
|
||||
"--output",
|
||||
str(output_dir),
|
||||
"--modality",
|
||||
"mod1",
|
||||
"--obs_feature",
|
||||
"Obs",
|
||||
"--drop_obs_nan",
|
||||
"true",
|
||||
"--output_files",
|
||||
str(output_files),
|
||||
]
|
||||
|
||||
run_component(args)
|
||||
|
||||
# check output dir and file names
|
||||
s1_file = output_dir / f"{input_h5mu_path.stem}_A.h5mu"
|
||||
s2_file = output_dir / f"{input_h5mu_path.stem}_B.h5mu"
|
||||
|
||||
# check that .obs columns with only nan values are dropped correctly
|
||||
s1 = mu.read_h5mu(s1_file)
|
||||
s2 = mu.read_h5mu(s2_file)
|
||||
|
||||
assert s1.n_obs == input_h5mu.n_obs, (
|
||||
"number of observations of split file does not match input file"
|
||||
)
|
||||
assert s2.n_obs == input_h5mu.n_obs, (
|
||||
"number of observations of split file does not match input file"
|
||||
)
|
||||
|
||||
assert s1.mod["mod1"].n_obs == 1, (
|
||||
"number of observations of split file s1 modality mod1 should equal 1"
|
||||
)
|
||||
assert s1.mod["mod2"].n_obs == input_h5mu.n_obs, (
|
||||
"number of observations of split file s1 modality mod2 should equal input file"
|
||||
)
|
||||
|
||||
assert len(s1.mod["mod1"].obs.keys()) == 1, (
|
||||
"number of observation keys split file s1 modality mod1 should equal 1"
|
||||
)
|
||||
assert len(s1.mod["mod2"].obs.keys()) == 1, (
|
||||
"number of observation keys split file s1 modality mod2 should equal 1"
|
||||
)
|
||||
|
||||
|
||||
def test_sanitizing(run_component, random_path, input_h5mu_path_non_unique_filenames):
|
||||
output_dir = random_path()
|
||||
output_files = random_path(extension="csv")
|
||||
|
||||
args = [
|
||||
"--input",
|
||||
input_h5mu_path_non_unique_filenames,
|
||||
"--output",
|
||||
str(output_dir),
|
||||
"--modality",
|
||||
"mod3",
|
||||
"--obs_feature",
|
||||
"Obs",
|
||||
"--drop_obs_nan",
|
||||
"true",
|
||||
"--output_files",
|
||||
str(output_files),
|
||||
]
|
||||
|
||||
with pytest.raises(subprocess.CalledProcessError) as err:
|
||||
run_component(args)
|
||||
assert re.search(
|
||||
r"ValueError: File names are not unique after sanitizing the --obs_feature Obs values",
|
||||
err.value.stdout.decode("utf-8"),
|
||||
)
|
||||
|
||||
args_san = [
|
||||
"--input",
|
||||
input_h5mu_path_non_unique_filenames,
|
||||
"--output",
|
||||
str(output_dir),
|
||||
"--modality",
|
||||
"mod3",
|
||||
"--obs_feature",
|
||||
"Obs",
|
||||
"--drop_obs_nan",
|
||||
"true",
|
||||
"--output_files",
|
||||
str(output_files),
|
||||
"--ensure_unique_filenames",
|
||||
"true",
|
||||
]
|
||||
|
||||
run_component(args_san)
|
||||
|
||||
# check output dir and file names
|
||||
dir_content = [
|
||||
h5mu_file
|
||||
for h5mu_file in output_dir.iterdir()
|
||||
if h5mu_file.suffix == ".h5mu"
|
||||
and h5mu_file != input_h5mu_path_non_unique_filenames
|
||||
]
|
||||
s1_file = output_dir / f"{input_h5mu_path_non_unique_filenames.stem}_C_C.h5mu"
|
||||
s2_file = output_dir / f"{input_h5mu_path_non_unique_filenames.stem}_C_C_1.h5mu"
|
||||
|
||||
assert s1_file.is_file(), f"{s1_file} does not exist"
|
||||
assert s2_file.is_file(), f"{s2_file} does not exist"
|
||||
assert set(dir_content) == set([s1_file, s2_file]), (
|
||||
"Output files do not match file names in csv"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(pytest.main([__file__]))
|
||||
@@ -357,7 +357,6 @@ dependencies:
|
||||
- name: neighbors/spatial_neighborhood_graph
|
||||
- name: nichecompass/nichecompass
|
||||
- name: dataflow/split_h5mu
|
||||
repository: openpipeline
|
||||
- name: workflows/multiomics/neighbors_leiden_umap
|
||||
repository: openpipeline
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@ build_info:
|
||||
output: "target/_private/executable/filter/subset_cosmx"
|
||||
executable: "target/_private/executable/filter/subset_cosmx/subset_cosmx"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
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.description="Companion container for running component filter subset_cosmx"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:08Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:57Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -227,7 +227,7 @@ build_info:
|
||||
output: "target/_private/nextflow/filter/subset_cosmx"
|
||||
executable: "target/_private/nextflow/filter/subset_cosmx/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3333,7 +3333,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/_private/nextflow/filter/subset_cosmx",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -157,7 +157,7 @@ build_info:
|
||||
output: "target/_test/executable/test_workflows/ingestion/spaceranger_mapping_test"
|
||||
executable: "target/_test/executable/test_workflows/ingestion/spaceranger_mapping_test/spaceranger_mapping_test"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -459,9 +459,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component test_workflows/ingestion spaceranger_mapping_test"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:07Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:59Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -156,7 +156,7 @@ build_info:
|
||||
output: "target/_test/executable/test_workflows/niche/nichecompass_leiden_test"
|
||||
executable: "target/_test/executable/test_workflows/niche/nichecompass_leiden_test/nichecompass_leiden_test"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -459,9 +459,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component test_workflows/niche nichecompass_leiden_test"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:07Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:59Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -157,7 +157,7 @@ build_info:
|
||||
output: "target/_test/nextflow/test_workflows/ingestion/spaceranger_mapping_test"
|
||||
executable: "target/_test/nextflow/test_workflows/ingestion/spaceranger_mapping_test/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3235,7 +3235,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/_test/nextflow/test_workflows/ingestion/spaceranger_mapping_test",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -156,7 +156,7 @@ build_info:
|
||||
output: "target/_test/nextflow/test_workflows/niche/nichecompass_leiden_test"
|
||||
executable: "target/_test/nextflow/test_workflows/niche/nichecompass_leiden_test/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3235,7 +3235,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/_test/nextflow/test_workflows/niche/nichecompass_leiden_test",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
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
|
||||
|
||||
// The memory a task is assinged increases with each attempt
|
||||
// uncomment the line below and adjust the value to set a global upper limit on the memory.
|
||||
// resourceLimits = [ memory: 240.Gb ]
|
||||
|
||||
// CPU resources
|
||||
withLabel: singlecpu { cpus = 1 }
|
||||
withLabel: lowcpu { cpus = 4 }
|
||||
withLabel: midcpu { cpus = 10 }
|
||||
withLabel: highcpu { cpus = 20 }
|
||||
|
||||
// Memory resources
|
||||
withLabel: lowmem { memory = { task?.resourceLimits?.memory && task?.maxRetries && task.attempt >= task.maxRetries ? task.resourceLimits.memory : 4.GB * task.attempt } }
|
||||
withLabel: midmem { memory = { task?.resourceLimits?.memory && task?.maxRetries && task.attempt >= task.maxRetries ? task.resourceLimits.memory : 25.GB * task.attempt } }
|
||||
withLabel: highmem { memory = { task?.resourceLimits?.memory && task?.maxRetries && task.attempt >= task.maxRetries ? task.resourceLimits.memory : 50.GB * task.attempt } }
|
||||
withLabel: veryhighmem { memory = { task?.resourceLimits?.memory && task?.maxRetries && task.attempt >= task.maxRetries ? task.resourceLimits.memory : 75.GB * task.attempt } }
|
||||
|
||||
// Disk space
|
||||
withLabel: lowdisk {
|
||||
disk = {process.disk ? process.disk : null}
|
||||
}
|
||||
withLabel: middisk {
|
||||
disk = {process.disk ? process.disk : null}
|
||||
}
|
||||
withLabel: highdisk {
|
||||
disk = {process.disk ? process.disk : null}
|
||||
}
|
||||
withLabel: veryhighdisk {
|
||||
disk = {process.disk ? process.disk : null}
|
||||
}
|
||||
|
||||
// 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 } }
|
||||
}
|
||||
@@ -303,7 +303,7 @@ build_info:
|
||||
output: "target/executable/convert/from_cells2stats_to_h5mu"
|
||||
executable: "target/executable/convert/from_cells2stats_to_h5mu/from_cells2stats_to_h5mu"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -459,9 +459,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_cells2stats_to_h5mu"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:08Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:58Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -239,7 +239,7 @@ build_info:
|
||||
output: "target/executable/convert/from_cosmx_to_h5mu"
|
||||
executable: "target/executable/convert/from_cosmx_to_h5mu/from_cosmx_to_h5mu"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -460,9 +460,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
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.created="2026-02-16T13:09:06Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:58Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -234,7 +234,7 @@ build_info:
|
||||
output: "target/executable/convert/from_cosmx_to_spatialexperiment"
|
||||
executable: "target/executable/convert/from_cosmx_to_spatialexperiment/from_cosmx_to_spatialexperiment"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -457,9 +457,9 @@ RUN Rscript -e 'options(warn = 2); if (!requireNamespace("BiocManager", quietly
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_cosmx_to_spatialexperiment"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:07Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:57Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -227,7 +227,7 @@ build_info:
|
||||
output: "target/executable/convert/from_h5mu_to_spatialexperiment"
|
||||
executable: "target/executable/convert/from_h5mu_to_spatialexperiment/from_h5mu_to_spatialexperiment"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -458,9 +458,9 @@ RUN Rscript -e 'options(warn = 2); if (!requireNamespace("remotes", quietly = TR
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_h5mu_to_spatialexperiment"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:08Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:57Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -265,7 +265,7 @@ build_info:
|
||||
output: "target/executable/convert/from_spaceranger_to_h5mu"
|
||||
executable: "target/executable/convert/from_spaceranger_to_h5mu/from_spaceranger_to_h5mu"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_spaceranger_to_h5mu"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:07Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:59Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -223,7 +223,7 @@ build_info:
|
||||
output: "target/executable/convert/from_spatialdata_to_h5mu"
|
||||
executable: "target/executable/convert/from_spatialdata_to_h5mu/from_spatialdata_to_h5mu"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -459,9 +459,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
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.created="2026-02-16T13:09:08Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:57Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -246,7 +246,7 @@ build_info:
|
||||
output: "target/executable/convert/from_xenium_to_h5mu"
|
||||
executable: "target/executable/convert/from_xenium_to_h5mu/from_xenium_to_h5mu"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -459,9 +459,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_xenium_to_h5mu"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:07Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:59Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -326,7 +326,7 @@ build_info:
|
||||
output: "target/executable/convert/from_xenium_to_spatialdata"
|
||||
executable: "target/executable/convert/from_xenium_to_spatialdata/from_xenium_to_spatialdata"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -459,9 +459,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
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.created="2026-02-16T13:09:07Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:59Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -238,7 +238,7 @@ build_info:
|
||||
output: "target/executable/convert/from_xenium_to_spatialexperiment"
|
||||
executable: "target/executable/convert/from_xenium_to_spatialexperiment/from_xenium_to_spatialexperiment"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -462,9 +462,9 @@ RUN Rscript -e 'options(warn = 2); if (!requireNamespace("BiocManager", quietly
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component convert from_xenium_to_spatialexperiment"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:08Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:58Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
279
target/executable/dataflow/split_h5mu/.config.vsh.yaml
Normal file
279
target/executable/dataflow/split_h5mu/.config.vsh.yaml
Normal file
@@ -0,0 +1,279 @@
|
||||
name: "split_h5mu"
|
||||
namespace: "dataflow"
|
||||
version: "niche-compass"
|
||||
authors:
|
||||
- name: "Dorien Roosen"
|
||||
roles:
|
||||
- "author"
|
||||
- "maintainer"
|
||||
info:
|
||||
role: "Core Team Member"
|
||||
links:
|
||||
email: "dorien@data-intuitive.com"
|
||||
github: "dorien-er"
|
||||
linkedin: "dorien-roosen"
|
||||
organizations:
|
||||
- name: "Data Intuitive"
|
||||
href: "https://www.data-intuitive.com"
|
||||
role: "Data Scientist"
|
||||
argument_groups:
|
||||
- name: "Input & specifications"
|
||||
arguments:
|
||||
- type: "file"
|
||||
name: "--input"
|
||||
description: "Path to a single .h5mu file."
|
||||
info: null
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: true
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--modality"
|
||||
description: "Which modality from the input MuData file to process.\n"
|
||||
info: null
|
||||
default:
|
||||
- "rna"
|
||||
required: false
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--obs_feature"
|
||||
description: "The .obs column to split the mudata on."
|
||||
info: null
|
||||
example:
|
||||
- "celltype"
|
||||
required: true
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "boolean_true"
|
||||
name: "--drop_obs_nan"
|
||||
description: "Whether to drop all .obs columns that contain only nan values after\
|
||||
\ splitting."
|
||||
info: null
|
||||
direction: "input"
|
||||
- type: "boolean_true"
|
||||
name: "--ensure_unique_filenames"
|
||||
description: "Append number suffixes to ensure unique filenames after sanitizing\
|
||||
\ obs feature values."
|
||||
info: null
|
||||
direction: "input"
|
||||
- name: "Outputs"
|
||||
arguments:
|
||||
- type: "file"
|
||||
name: "--output"
|
||||
description: "Output directory containing multiple h5mu files."
|
||||
info: null
|
||||
example:
|
||||
- "/path/to/output"
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: true
|
||||
direction: "output"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "file"
|
||||
name: "--output_files"
|
||||
description: "A csv containing the base filename and obs feature by which it was\
|
||||
\ split."
|
||||
info: null
|
||||
example:
|
||||
- "sample_files.csv"
|
||||
must_exist: true
|
||||
create_parent: true
|
||||
required: true
|
||||
direction: "output"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
- type: "string"
|
||||
name: "--output_compression"
|
||||
description: "Compression format to use for the output AnnData and/or Mudata objects.\n\
|
||||
By default no compression is applied.\n"
|
||||
info: null
|
||||
example:
|
||||
- "gzip"
|
||||
required: false
|
||||
choices:
|
||||
- "gzip"
|
||||
- "lzf"
|
||||
direction: "input"
|
||||
multiple: false
|
||||
multiple_sep: ";"
|
||||
resources:
|
||||
- type: "python_script"
|
||||
path: "script.py"
|
||||
is_executable: true
|
||||
- type: "file"
|
||||
path: "setup_logger.py"
|
||||
- type: "file"
|
||||
path: "nextflow_labels.config"
|
||||
dest: "nextflow_labels.config"
|
||||
description: "Split the samples of a single modality from a .h5mu (multimodal) sample\
|
||||
\ into seperate .h5mu files based on the values of an .obs column of this modality.\
|
||||
\ \n"
|
||||
test_resources:
|
||||
- type: "python_script"
|
||||
path: "test.py"
|
||||
is_executable: true
|
||||
info: null
|
||||
status: "enabled"
|
||||
scope:
|
||||
image: "public"
|
||||
target: "public"
|
||||
repositories:
|
||||
- type: "vsh"
|
||||
name: "openpipeline"
|
||||
repo: "openpipeline"
|
||||
tag: "v4.0.2"
|
||||
links:
|
||||
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
docker_registry: "ghcr.io"
|
||||
runners:
|
||||
- type: "executable"
|
||||
id: "executable"
|
||||
docker_setup_strategy: "ifneedbepullelsecachedbuild"
|
||||
- type: "nextflow"
|
||||
id: "nextflow"
|
||||
directives:
|
||||
label:
|
||||
- "lowcpu"
|
||||
- "highmem"
|
||||
- "highdisk"
|
||||
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: "python:3.12-slim"
|
||||
target_registry: "images.viash-hub.com"
|
||||
target_tag: "niche-compass"
|
||||
namespace_separator: "/"
|
||||
setup:
|
||||
- type: "apt"
|
||||
packages:
|
||||
- "procps"
|
||||
interactive: false
|
||||
- type: "python"
|
||||
user: false
|
||||
packages:
|
||||
- "anndata~=0.12.7"
|
||||
- "awkward"
|
||||
- "mudata~=0.3.2"
|
||||
script:
|
||||
- "exec(\"try:\\n import zarr; from importlib.metadata import version\\nexcept\
|
||||
\ ModuleNotFoundError:\\n exit(0)\\nelse: assert int(version(\\\"zarr\\\"\
|
||||
).partition(\\\".\\\")[0]) > 2\")"
|
||||
upgrade: true
|
||||
test_setup:
|
||||
- type: "apt"
|
||||
packages:
|
||||
- "git"
|
||||
interactive: false
|
||||
- type: "python"
|
||||
user: false
|
||||
packages:
|
||||
- "viashpy==0.9.0"
|
||||
github:
|
||||
- "openpipelines-bio/core#subdirectory=packages/python/openpipeline_testutils"
|
||||
upgrade: true
|
||||
entrypoint: []
|
||||
cmd: null
|
||||
- type: "native"
|
||||
id: "native"
|
||||
build_info:
|
||||
config: "src/dataflow/split_h5mu/config.vsh.yaml"
|
||||
runner: "executable"
|
||||
engine: "docker|native"
|
||||
output: "target/executable/dataflow/split_h5mu"
|
||||
executable: "target/executable/dataflow/split_h5mu/split_h5mu"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
version: "niche-compass"
|
||||
info:
|
||||
test_resources:
|
||||
- type: "s3"
|
||||
path: "s3://openpipelines-bio/openpipeline_spatial/resources_test"
|
||||
dest: "resources_test"
|
||||
repositories:
|
||||
- type: "vsh"
|
||||
name: "openpipeline"
|
||||
repo: "openpipeline"
|
||||
tag: "v4.0.2"
|
||||
viash_version: "0.9.4"
|
||||
source: "src"
|
||||
target: "target"
|
||||
config_mods:
|
||||
- ".resources += {path: '/src/workflows/utils/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 := 'niche-compass'"
|
||||
organization: "vsh"
|
||||
links:
|
||||
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
docker_registry: "ghcr.io"
|
||||
68
target/executable/dataflow/split_h5mu/nextflow_labels.config
Normal file
68
target/executable/dataflow/split_h5mu/nextflow_labels.config
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
1360
target/executable/dataflow/split_h5mu/split_h5mu
Executable file
1360
target/executable/dataflow/split_h5mu/split_h5mu
Executable file
File diff suppressed because it is too large
Load Diff
@@ -439,7 +439,7 @@ build_info:
|
||||
output: "target/executable/mapping/spaceranger_count"
|
||||
executable: "target/executable/mapping/spaceranger_count/spaceranger_count"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -453,9 +453,9 @@ apt upgrade -y && apt install -y procps && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
LABEL org.opencontainers.image.authors="Jakub Majercik"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component mapping spaceranger_count"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:06Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:57Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -270,7 +270,7 @@ build_info:
|
||||
output: "target/executable/neighbors/spatial_neighborhood_graph"
|
||||
executable: "target/executable/neighbors/spatial_neighborhood_graph/spatial_neighborhood_graph"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -458,9 +458,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component neighbors spatial_neighborhood_graph"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:08Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:57Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -998,7 +998,7 @@ build_info:
|
||||
output: "target/executable/nichecompass/nichecompass"
|
||||
executable: "target/executable/nichecompass/nichecompass/nichecompass"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -460,9 +460,9 @@ RUN pip install --upgrade pip && \
|
||||
|
||||
LABEL org.opencontainers.image.authors="Dorien Roosen"
|
||||
LABEL org.opencontainers.image.description="Companion container for running component nichecompass nichecompass"
|
||||
LABEL org.opencontainers.image.created="2026-02-16T13:09:08Z"
|
||||
LABEL org.opencontainers.image.created="2026-02-17T11:00:58Z"
|
||||
LABEL org.opencontainers.image.source="https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
LABEL org.opencontainers.image.revision="86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
LABEL org.opencontainers.image.revision="ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
LABEL org.opencontainers.image.version="niche-compass"
|
||||
|
||||
VIASHDOCKER
|
||||
|
||||
@@ -303,7 +303,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_cells2stats_to_h5mu"
|
||||
executable: "target/nextflow/convert/from_cells2stats_to_h5mu/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3400,7 +3400,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_cells2stats_to_h5mu",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -239,7 +239,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_cosmx_to_h5mu"
|
||||
executable: "target/nextflow/convert/from_cosmx_to_h5mu/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3350,7 +3350,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_cosmx_to_h5mu",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -234,7 +234,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_cosmx_to_spatialexperiment"
|
||||
executable: "target/nextflow/convert/from_cosmx_to_spatialexperiment/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3326,7 +3326,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_cosmx_to_spatialexperiment",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -227,7 +227,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_h5mu_to_spatialexperiment"
|
||||
executable: "target/nextflow/convert/from_h5mu_to_spatialexperiment/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3334,7 +3334,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_h5mu_to_spatialexperiment",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -265,7 +265,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_spaceranger_to_h5mu"
|
||||
executable: "target/nextflow/convert/from_spaceranger_to_h5mu/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3368,7 +3368,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_spaceranger_to_h5mu",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -223,7 +223,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_spatialdata_to_h5mu"
|
||||
executable: "target/nextflow/convert/from_spatialdata_to_h5mu/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3332,7 +3332,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_spatialdata_to_h5mu",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -246,7 +246,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_xenium_to_h5mu"
|
||||
executable: "target/nextflow/convert/from_xenium_to_h5mu/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3349,7 +3349,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_xenium_to_h5mu",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -326,7 +326,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_xenium_to_spatialdata"
|
||||
executable: "target/nextflow/convert/from_xenium_to_spatialdata/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3443,7 +3443,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_xenium_to_spatialdata",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -238,7 +238,7 @@ build_info:
|
||||
output: "target/nextflow/convert/from_xenium_to_spatialexperiment"
|
||||
executable: "target/nextflow/convert/from_xenium_to_spatialexperiment/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3337,7 +3337,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/convert/from_xenium_to_spatialexperiment",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: "split_h5mu"
|
||||
namespace: "dataflow"
|
||||
version: "v4.0.2"
|
||||
version: "niche-compass"
|
||||
authors:
|
||||
- name: "Dorien Roosen"
|
||||
roles:
|
||||
@@ -123,9 +123,13 @@ status: "enabled"
|
||||
scope:
|
||||
image: "public"
|
||||
target: "public"
|
||||
license: "MIT"
|
||||
repositories:
|
||||
- type: "vsh"
|
||||
name: "openpipeline"
|
||||
repo: "openpipeline"
|
||||
tag: "v4.0.2"
|
||||
links:
|
||||
repository: "https://github.com/openpipelines-bio/openpipeline"
|
||||
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
docker_registry: "ghcr.io"
|
||||
runners:
|
||||
- type: "executable"
|
||||
@@ -203,7 +207,7 @@ engines:
|
||||
id: "docker"
|
||||
image: "python:3.12-slim"
|
||||
target_registry: "images.viash-hub.com"
|
||||
target_tag: "v4.0.2"
|
||||
target_tag: "niche-compass"
|
||||
namespace_separator: "/"
|
||||
setup:
|
||||
- type: "apt"
|
||||
@@ -229,7 +233,7 @@ engines:
|
||||
- type: "python"
|
||||
user: false
|
||||
packages:
|
||||
- "viashpy==0.8.0"
|
||||
- "viashpy==0.9.0"
|
||||
github:
|
||||
- "openpipelines-bio/core#subdirectory=packages/python/openpipeline_testutils"
|
||||
upgrade: true
|
||||
@@ -244,31 +248,21 @@ build_info:
|
||||
output: "target/nextflow/dataflow/split_h5mu"
|
||||
executable: "target/nextflow/dataflow/split_h5mu/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "cd7beddfa85b60b543399a9e2554b8e7b8eaaf62"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline"
|
||||
version: "v4.0.2"
|
||||
summary: "Best-practice workflows for single-cell multi-omics analyses.\n"
|
||||
description: "OpenPipelines are extensible single cell analysis pipelines for reproducible\
|
||||
\ and large-scale single cell processing using [Viash](https://viash.io) and [Nextflow](https://www.nextflow.io/).\n\
|
||||
\nIn terms of workflows, the following has been made available, but keep in mind\
|
||||
\ that\nindividual tools and functionality can be executed as standalone components\
|
||||
\ as well.\n\n * Demultiplexing: conversion of raw sequencing data to FASTQ objects.\n\
|
||||
\ * Ingestion: Read mapping and generating a count matrix.\n * Single sample\
|
||||
\ processing: cell filtering and doublet detection.\n * Multisample processing:\
|
||||
\ Count transformation, normalization, QC metric calulations.\n * Integration:\
|
||||
\ Clustering, integration and batch correction using single and multimodal methods.\n\
|
||||
\ * Downstream analysis workflows\n"
|
||||
name: "openpipeline_spatial"
|
||||
version: "niche-compass"
|
||||
info:
|
||||
test_resources:
|
||||
- type: "s3"
|
||||
path: "s3://openpipelines-data"
|
||||
path: "s3://openpipelines-bio/openpipeline_spatial/resources_test"
|
||||
dest: "resources_test"
|
||||
nextflow_labels_ci:
|
||||
- path: "src/workflows/utils/labels_ci.config"
|
||||
description: "Adds the correct memory and CPU labels when running on the Viash\
|
||||
\ Hub CI."
|
||||
repositories:
|
||||
- type: "vsh"
|
||||
name: "openpipeline"
|
||||
repo: "openpipeline"
|
||||
tag: "v4.0.2"
|
||||
viash_version: "0.9.4"
|
||||
source: "src"
|
||||
target: "target"
|
||||
@@ -278,15 +272,8 @@ package_config:
|
||||
)'"
|
||||
- ".engines += { type: \"native\" }"
|
||||
- ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'"
|
||||
- ".engines[.type == 'docker'].target_tag := 'v4.0.2'"
|
||||
keywords:
|
||||
- "single-cell"
|
||||
- "multimodal"
|
||||
license: "MIT"
|
||||
- ".engines[.type == 'docker'].target_tag := 'niche-compass'"
|
||||
organization: "vsh"
|
||||
links:
|
||||
repository: "https://github.com/openpipelines-bio/openpipeline"
|
||||
repository: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
docker_registry: "ghcr.io"
|
||||
homepage: "https://openpipelines.bio"
|
||||
documentation: "https://openpipelines.bio/fundamentals"
|
||||
issue_tracker: "https://github.com/openpipelines-bio/openpipeline/issues"
|
||||
@@ -1,4 +1,4 @@
|
||||
// split_h5mu v4.0.2
|
||||
// split_h5mu niche-compass
|
||||
//
|
||||
// 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
|
||||
@@ -3035,7 +3035,7 @@ meta = [
|
||||
"config": processConfig(readJsonBlob('''{
|
||||
"name" : "split_h5mu",
|
||||
"namespace" : "dataflow",
|
||||
"version" : "v4.0.2",
|
||||
"version" : "niche-compass",
|
||||
"authors" : [
|
||||
{
|
||||
"name" : "Dorien Roosen",
|
||||
@@ -3192,9 +3192,16 @@ meta = [
|
||||
"image" : "public",
|
||||
"target" : "public"
|
||||
},
|
||||
"license" : "MIT",
|
||||
"repositories" : [
|
||||
{
|
||||
"type" : "vsh",
|
||||
"name" : "openpipeline",
|
||||
"repo" : "openpipeline",
|
||||
"tag" : "v4.0.2"
|
||||
}
|
||||
],
|
||||
"links" : {
|
||||
"repository" : "https://github.com/openpipelines-bio/openpipeline",
|
||||
"repository" : "https://github.com/openpipelines-bio/openpipeline_spatial",
|
||||
"docker_registry" : "ghcr.io"
|
||||
},
|
||||
"runners" : [
|
||||
@@ -3285,7 +3292,7 @@ meta = [
|
||||
"id" : "docker",
|
||||
"image" : "python:3.12-slim",
|
||||
"target_registry" : "images.viash-hub.com",
|
||||
"target_tag" : "v4.0.2",
|
||||
"target_tag" : "niche-compass",
|
||||
"namespace_separator" : "/",
|
||||
"setup" : [
|
||||
{
|
||||
@@ -3321,7 +3328,7 @@ meta = [
|
||||
"type" : "python",
|
||||
"user" : false,
|
||||
"packages" : [
|
||||
"viashpy==0.8.0"
|
||||
"viashpy==0.9.0"
|
||||
],
|
||||
"github" : [
|
||||
"openpipelines-bio/core#subdirectory=packages/python/openpipeline_testutils"
|
||||
@@ -3341,29 +3348,29 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/dataflow/split_h5mu",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "cd7beddfa85b60b543399a9e2554b8e7b8eaaf62",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline"
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
"name" : "openpipeline",
|
||||
"version" : "v4.0.2",
|
||||
"summary" : "Best-practice workflows for single-cell multi-omics analyses.\n",
|
||||
"description" : "OpenPipelines are extensible single cell analysis pipelines for reproducible and large-scale single cell processing using [Viash](https://viash.io) and [Nextflow](https://www.nextflow.io/).\n\nIn terms of workflows, the following has been made available, but keep in mind that\nindividual tools and functionality can be executed as standalone components as well.\n\n * Demultiplexing: conversion of raw sequencing data to FASTQ objects.\n * Ingestion: Read mapping and generating a count matrix.\n * Single sample processing: cell filtering and doublet detection.\n * Multisample processing: Count transformation, normalization, QC metric calulations.\n * Integration: Clustering, integration and batch correction using single and multimodal methods.\n * Downstream analysis workflows\n",
|
||||
"name" : "openpipeline_spatial",
|
||||
"version" : "niche-compass",
|
||||
"info" : {
|
||||
"test_resources" : [
|
||||
{
|
||||
"type" : "s3",
|
||||
"path" : "s3://openpipelines-data",
|
||||
"path" : "s3://openpipelines-bio/openpipeline_spatial/resources_test",
|
||||
"dest" : "resources_test"
|
||||
}
|
||||
],
|
||||
"nextflow_labels_ci" : [
|
||||
{
|
||||
"path" : "src/workflows/utils/labels_ci.config",
|
||||
"description" : "Adds the correct memory and CPU labels when running on the Viash Hub CI."
|
||||
}
|
||||
]
|
||||
},
|
||||
"repositories" : [
|
||||
{
|
||||
"type" : "vsh",
|
||||
"name" : "openpipeline",
|
||||
"repo" : "openpipeline",
|
||||
"tag" : "v4.0.2"
|
||||
}
|
||||
],
|
||||
"viash_version" : "0.9.4",
|
||||
"source" : "/workdir/root/repo/src",
|
||||
"target" : "/workdir/root/repo/target",
|
||||
@@ -3371,20 +3378,12 @@ meta = [
|
||||
".resources += {path: '/src/workflows/utils/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 := 'v4.0.2'"
|
||||
".engines[.type == 'docker'].target_tag := 'niche-compass'"
|
||||
],
|
||||
"keywords" : [
|
||||
"single-cell",
|
||||
"multimodal"
|
||||
],
|
||||
"license" : "MIT",
|
||||
"organization" : "vsh",
|
||||
"links" : {
|
||||
"repository" : "https://github.com/openpipelines-bio/openpipeline",
|
||||
"docker_registry" : "ghcr.io",
|
||||
"homepage" : "https://openpipelines.bio",
|
||||
"documentation" : "https://openpipelines.bio/fundamentals",
|
||||
"issue_tracker" : "https://github.com/openpipelines-bio/openpipeline/issues"
|
||||
"repository" : "https://github.com/openpipelines-bio/openpipeline_spatial",
|
||||
"docker_registry" : "ghcr.io"
|
||||
}
|
||||
}
|
||||
}'''))
|
||||
@@ -3493,30 +3492,32 @@ def main():
|
||||
f"Filtering modality '{par['modality']}' observations by .obs['{par['obs_feature']}'] == {obs_name}"
|
||||
)
|
||||
mdata_obs = mdata.copy()
|
||||
adata_obs = mdata_obs.mod[par["modality"]]
|
||||
adata_full = mdata_obs.mod[par["modality"]]
|
||||
|
||||
# split the samples
|
||||
adata_obs = adata_obs[adata_obs.obs[par["obs_feature"]] == obs_name]
|
||||
mdata_obs_name = f"{input_file.stem}_{file_name}.h5mu"
|
||||
obs_files.append(mdata_obs_name)
|
||||
mask = adata_full.obs[par["obs_feature"]] == obs_name
|
||||
adata_obs = adata_full[mask].copy()
|
||||
|
||||
# Dropping columns that only have nan values after splitting
|
||||
if par["drop_obs_nan"]:
|
||||
logger.info("Dropping all .obs columns with NaN values")
|
||||
adata_obs.obs.dropna(axis=1, how="all", inplace=True)
|
||||
adata_obs.obs = adata_obs.obs.dropna(axis=1, how="all")
|
||||
|
||||
mdata_obs.mod[par["modality"]] = adata_obs
|
||||
|
||||
mdata_obs_name = f"{input_file.stem}_{file_name}.h5mu"
|
||||
out_path = output_dir / mdata_obs_name
|
||||
|
||||
# replace mdata file with modality adata contianing split samples
|
||||
logger.info(
|
||||
f"Writing h5mu filtered for {par['obs_feature']} {obs_name} to file {output_dir / mdata_obs_name}"
|
||||
)
|
||||
mdata_obs.mod[par["modality"]] = adata_obs
|
||||
mdata_obs.write_h5mu(
|
||||
output_dir / mdata_obs_name, compression=par["output_compression"]
|
||||
f"Writing h5mu filtered for {par['obs_feature']} {obs_name} to file {out_path}"
|
||||
)
|
||||
|
||||
mdata_obs.write_h5mu(out_path, compression=par["output_compression"])
|
||||
|
||||
# avoid keeping files in memory
|
||||
del mdata_obs
|
||||
del adata_obs
|
||||
obs_files.append(mdata_obs_name)
|
||||
del mdata_obs, adata_obs
|
||||
gc.collect()
|
||||
|
||||
logger.info(f"Writing output_files CSV file to {par['output_files']}")
|
||||
@@ -3907,8 +3908,8 @@ meta["defaults"] = [
|
||||
directives: readJsonBlob('''{
|
||||
"container" : {
|
||||
"registry" : "images.viash-hub.com",
|
||||
"image" : "vsh/openpipeline/dataflow/split_h5mu",
|
||||
"tag" : "v4.0.2"
|
||||
"image" : "vsh/openpipeline_spatial/dataflow/split_h5mu",
|
||||
"tag" : "niche-compass"
|
||||
},
|
||||
"label" : [
|
||||
"lowcpu",
|
||||
@@ -2,7 +2,7 @@ manifest {
|
||||
name = 'dataflow/split_h5mu'
|
||||
mainScript = 'main.nf'
|
||||
nextflowVersion = '!>=20.12.1-edge'
|
||||
version = 'v4.0.2'
|
||||
version = 'niche-compass'
|
||||
description = 'Split the samples of a single modality from a .h5mu (multimodal) sample into seperate .h5mu files based on the values of an .obs column of this modality. \n'
|
||||
author = 'Dorien Roosen'
|
||||
}
|
||||
68
target/nextflow/dataflow/split_h5mu/nextflow_labels.config
Normal file
68
target/nextflow/dataflow/split_h5mu/nextflow_labels.config
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
12
target/nextflow/dataflow/split_h5mu/setup_logger.py
Normal file
12
target/nextflow/dataflow/split_h5mu/setup_logger.py
Normal file
@@ -0,0 +1,12 @@
|
||||
def setup_logger():
|
||||
import logging
|
||||
from sys import stdout
|
||||
|
||||
logger = logging.getLogger()
|
||||
logger.setLevel(logging.INFO)
|
||||
console_handler = logging.StreamHandler(stdout)
|
||||
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
|
||||
console_handler.setFormatter(logFormatter)
|
||||
logger.addHandler(console_handler)
|
||||
|
||||
return logger
|
||||
@@ -439,7 +439,7 @@ build_info:
|
||||
output: "target/nextflow/mapping/spaceranger_count"
|
||||
executable: "target/nextflow/mapping/spaceranger_count/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3569,7 +3569,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/mapping/spaceranger_count",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -270,7 +270,7 @@ build_info:
|
||||
output: "target/nextflow/neighbors/spatial_neighborhood_graph"
|
||||
executable: "target/nextflow/neighbors/spatial_neighborhood_graph/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3373,7 +3373,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/neighbors/spatial_neighborhood_graph",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -998,7 +998,7 @@ build_info:
|
||||
output: "target/nextflow/nichecompass/nichecompass"
|
||||
executable: "target/nextflow/nichecompass/nichecompass/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -4129,7 +4129,7 @@ meta = [
|
||||
"engine" : "docker|native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/nichecompass/nichecompass",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -477,7 +477,7 @@ build_info:
|
||||
output: "target/nextflow/workflows/ingestion/spaceranger_mapping"
|
||||
executable: "target/nextflow/workflows/ingestion/spaceranger_mapping/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
dependencies:
|
||||
- "target/nextflow/mapping/spaceranger_count"
|
||||
|
||||
@@ -3623,7 +3623,7 @@ meta = [
|
||||
"engine" : "native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/workflows/ingestion/spaceranger_mapping",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -640,7 +640,7 @@ build_info:
|
||||
output: "target/nextflow/workflows/multiomics/spatial_process_samples"
|
||||
executable: "target/nextflow/workflows/multiomics/spatial_process_samples/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
dependencies:
|
||||
- "target/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/workflows/multiomics/process_samples"
|
||||
|
||||
@@ -3807,7 +3807,7 @@ meta = [
|
||||
"engine" : "native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/workflows/multiomics/spatial_process_samples",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
@@ -707,9 +707,7 @@ dependencies:
|
||||
type: "local"
|
||||
- name: "dataflow/split_h5mu"
|
||||
repository:
|
||||
type: "vsh"
|
||||
repo: "openpipeline"
|
||||
tag: "v4.0.2"
|
||||
type: "local"
|
||||
- name: "workflows/multiomics/neighbors_leiden_umap"
|
||||
repository:
|
||||
type: "vsh"
|
||||
@@ -797,13 +795,13 @@ build_info:
|
||||
output: "target/nextflow/workflows/niche/nichecompass_leiden"
|
||||
executable: "target/nextflow/workflows/niche/nichecompass_leiden/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
dependencies:
|
||||
- "target/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/dataflow/concatenate_h5mu"
|
||||
- "target/nextflow/neighbors/spatial_neighborhood_graph"
|
||||
- "target/nextflow/nichecompass/nichecompass"
|
||||
- "target/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/dataflow/split_h5mu"
|
||||
- "target/nextflow/dataflow/split_h5mu"
|
||||
- "target/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/workflows/multiomics/neighbors_leiden_umap"
|
||||
package_config:
|
||||
name: "openpipeline_spatial"
|
||||
|
||||
@@ -3840,9 +3840,7 @@ meta = [
|
||||
{
|
||||
"name" : "dataflow/split_h5mu",
|
||||
"repository" : {
|
||||
"type" : "vsh",
|
||||
"repo" : "openpipeline",
|
||||
"tag" : "v4.0.2"
|
||||
"type" : "local"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -3950,7 +3948,7 @@ meta = [
|
||||
"engine" : "native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/workflows/niche/nichecompass_leiden",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
@@ -3996,7 +3994,7 @@ meta["root_dir"] = getRootDir()
|
||||
include { concatenate_h5mu } from "${meta.root_dir}/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/dataflow/concatenate_h5mu/main.nf"
|
||||
include { spatial_neighborhood_graph } from "${meta.resources_dir}/../../../../nextflow/neighbors/spatial_neighborhood_graph/main.nf"
|
||||
include { nichecompass } from "${meta.resources_dir}/../../../../nextflow/nichecompass/nichecompass/main.nf"
|
||||
include { split_h5mu } from "${meta.root_dir}/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/dataflow/split_h5mu/main.nf"
|
||||
include { split_h5mu } from "${meta.resources_dir}/../../../../nextflow/dataflow/split_h5mu/main.nf"
|
||||
include { neighbors_leiden_umap } from "${meta.root_dir}/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/workflows/multiomics/neighbors_leiden_umap/main.nf"
|
||||
|
||||
// inner workflow
|
||||
|
||||
@@ -387,7 +387,7 @@ build_info:
|
||||
output: "target/nextflow/workflows/qc/spatial_qc"
|
||||
executable: "target/nextflow/workflows/qc/spatial_qc/main.nf"
|
||||
viash_version: "0.9.4"
|
||||
git_commit: "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc"
|
||||
git_commit: "ad19aba349736848d99a9646870d8e7868eb6515"
|
||||
git_remote: "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
dependencies:
|
||||
- "target/dependencies/vsh/vsh/openpipeline/v4.0.2/nextflow/workflows/qc/qc"
|
||||
|
||||
@@ -3505,7 +3505,7 @@ meta = [
|
||||
"engine" : "native",
|
||||
"output" : "/workdir/root/repo/target/nextflow/workflows/qc/spatial_qc",
|
||||
"viash_version" : "0.9.4",
|
||||
"git_commit" : "86d15c1b0d1bdc77c2adffaa09f98f28045fa5bc",
|
||||
"git_commit" : "ad19aba349736848d99a9646870d8e7868eb6515",
|
||||
"git_remote" : "https://github.com/openpipelines-bio/openpipeline_spatial"
|
||||
},
|
||||
"package_config" : {
|
||||
|
||||
Reference in New Issue
Block a user