Sophios documentation¶
Sophios is a high-level way to create, build, and execute Common Workflow Language (CWL) workflows. It is for people who already have useful command-line tools and want to turn them into portable, inspectable workflows without making raw CWL the day-to-day authoring language.
With Sophios, you describe command-line tool contracts, compose those tools into
workflow graphs, compile the graph to CWL, and run the result locally or prepare
it for execution on remote, HPC, or cloud resources. The generated workflow,
generated job inputs, exported .wic source, and execution artifacts remain
available for inspection.
The practical outcome is straightforward: workflow authors work in Python by default, execution remains grounded in standard CWL, and teams can inspect the exact artifacts that a local runner or remote execution service will receive.
There are two authoring modes:
the Python Workflow API, which is the primary interface for most users and application code;
the
.wicYAML DSL, which is the file-native interface for standalone, headless, auditable, and advanced compiler-oriented workflows.
Why Sophios?¶
Most scientific and data workflows begin as command-line tools plus a shell script. That is a good starting point, but it becomes hard to maintain when the workflow needs explicit tool contracts, portable execution, validated inputs, generated artifacts, reproducible local runs, or execution on external resources. Sophios gives that work a clear structure:
a
CommandLineToolcaptures what one tool expects and produces,a
Stepplaces that tool inside a workflow,a
Workflowowns the graph and named outputs,compilation emits CWL and job inputs you can inspect,
submission-oriented helpers validate payloads before remote execution.
The goal is not to hide the workflow. The goal is to make the workflow easier to author while keeping the compiled CWL and execution artifacts concrete enough to understand, debug, and review.
Start Here
- Overview
- Install Guide
- Python Workflow API
- Scope
- Working Directory Assumption
- Step 1: Load a Tool as a Step
- Step 2: Bind a Literal Input
- Step 3: Put Steps in a Workflow
- Step 4: Link Two Steps
- Linear Edge Inference
- Binding Types
- What Bindings Become
- Named Workflow Outputs
- Export
.wicFrom Python - Compile Paths
- Running Locally
- Nested Workflows
- Scatter and Conditionals
- Generated Files
- Troubleshooting
- Maintained Examples
- Next Steps
Python API
- Running a Multistep Workflow Locally
- Building Tool Contracts in Python
- Using Tool Builder and the Workflow Python API Together
- From Python Workflow to Compute Payload
- Canonical Python-to-Compute Flow with
ichnaea_compact.py- Scope
- What this example demonstrates
- The conceptual pipeline
- Where this document fits
- What
ichnaea_compact.pyis responsible for - Layer 1: the CLT definition
- Layer 2: the workflow wrapper
- Layer 3: compiled workflow output
- Layer 4: compute payload construction
- Submission behavior
- Why this path is reliable
- The verification-oriented sibling:
ichnaea_integrated.py - Recommended reading order
- Practical guidance
- Commands
- Summary
- Python API Reference
Advanced YAML and Operations
Developers
- Developer Install Guide
- What the Developer Install Provides
- Step 1: Clone the Repository
- Step 2: Create the Development Environment
- Step 3: Install Sophios in Editable Mode
- Step 4: Verify the Checkout
- Step 5: Build the Documentation
- Step 6: Run Tests
- Step 7: Run Static Checks
- Optional: Configure
.wicDiscovery - Optional: External Workflow Repositories
- Container Runtime Notes
- Developer Guide
- Algorithms
- Coding Standards
- Git Etiquette
- Developer API
- sophios.ast
- sophios.cli
- sophios.compiler
- sophios.compute_payload
- sophios.compute_submit
- sophios.cwl_subinterpreter
- sophios.inference
- sophios.inlineing
- sophios.input_output
- sophios.main
- sophios.plugins
- sophios.python_cwl_adapter
- sophios.run_local
- sophios.run_local_async
- sophios.schemas.wic_schema
- sophios.utils
- sophios.utils_cwl
- sophios.utils_graphs
- sophios.utils_yaml
- sophios.wic_types