Spaces:
Sleeping
Sleeping
A newer version of the Gradio SDK is available:
6.9.0
Viash Component Architecture Guide
Overview
Viash enables building reusable, portable components across Docker, native, and Nextflow platforms.
Component Structure
Configuration File (config.vsh.yaml)
name: "spatial_qc"
description: "Spatial transcriptomics quality control component"
argument_groups:
- name: "Input/Output"
arguments:
- name: "--input"
type: "file"
description: "Input spatial data (h5ad format)"
required: true
- name: "--output"
type: "file"
direction: "output"
description: "Output filtered data"
required: true
- name: "Parameters"
arguments:
- name: "--min_genes"
type: "integer"
description: "Minimum genes per cell"
default: 200
resources:
- type: "python_script"
path: "script.py"
platforms:
- type: "docker"
image: "quay.io/biocontainers/scanpy:1.9.1--pyhd8ed1ab_0"
- type: "nextflow"
Script Implementation
import argparse
import scanpy as sc
import json
parser = argparse.ArgumentParser()
parser.add_argument('--input', required=True)
parser.add_argument('--output', required=True)
parser.add_argument('--min_genes', type=int, default=200)
args = parser.parse_args()
adata = sc.read_h5ad(args.input)
sc.pp.filter_cells(adata, min_genes=args.min_genes)
adata.write(args.output)
Development Workflow
# Build component
viash build config.vsh.yaml -p docker
# Test component
viash test config.vsh.yaml
# Build for Nextflow
viash build config.vsh.yaml -p nextflow -o target/nextflow/
Best Practices
- Single Responsibility: Each component should do one thing well
- Clear Interfaces: Well-defined inputs and outputs
- Comprehensive Testing: Unit tests for all functionality
- Documentation: Clear descriptions and examples