avaliev's picture
Demo Deployment - 0.0.1 version
c75526e verified

A newer version of the Gradio SDK is available: 6.9.0

Upgrade

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

  1. Single Responsibility: Each component should do one thing well
  2. Clear Interfaces: Well-defined inputs and outputs
  3. Comprehensive Testing: Unit tests for all functionality
  4. Documentation: Clear descriptions and examples